在sql中通过rowid获取值

zbsbpyhn  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(673)

如何在sqlite3中使用rowid获取特定行中的值。在我的文章中,我们编写了python代码:

conn = sqlite3.connect('database.db')
c = conn.cursor()
c.execute("SELECT rowid, * FROM aqn_data WHERE rowid = 25")

这会打印[],我想打印第25行的值。

ljsrvy3e

ljsrvy3e1#

您的execute语句似乎是正确的。
假设您的表实际上有一个名为rowid的列,而不是sqlite文档中定义的隐式列。
检查数据库中是否有 rowid = 25 .

SELECT * FROM aqn_data ORDER BY rowid ASC;

这将提供该表中的所有条目。一般 ORDER BY 在这种情况下应该是可选的,但是我没有关于如何创建表模式的信息,所以我提到了它。
如果它确实有您想要的数据,那么下面一行就足够了:

SELECT * FROM aqn_data WHERE rowid = 25;

这也值得重新格式化你的 Cursor.execute() 语句到:

c.execute("SELECT rowid, * FROM aqn_data WHERE rowid = ?", (25))

在这种特定的情况下没有什么区别,但是在代码中钻取这种做法还是有好处的,这样可以避免在实际依赖变量数据的代码中出现sql注入问题。千万不要对sqlite3对象使用python字符串格式!

muk1a3rh

muk1a3rh2#

您必须编写更多的代码来获取输出

conn = sqlite3.connect('database.db')
c = conn.cursor()
c.execute("SELECT rowid, * FROM aqn_data WHERE rowid = 25")

正确的代码

cur = conn.cursor()
cur.execute("SELECT rowid, * FROM aqn_data WHERE rowid = 25")

rows = cur.fetchall()

for row in rows:
    print(row)

相关问题