如何在sqlite3中使用rowid获取特定行中的值。在我的文章中,我们编写了python代码:
conn = sqlite3.connect('database.db') c = conn.cursor() c.execute("SELECT rowid, * FROM aqn_data WHERE rowid = 25")
这会打印[],我想打印第25行的值。
ljsrvy3e1#
您的execute语句似乎是正确的。假设您的表实际上有一个名为rowid的列,而不是sqlite文档中定义的隐式列。检查数据库中是否有 rowid = 25 .
rowid = 25
SELECT * FROM aqn_data ORDER BY rowid ASC;
这将提供该表中的所有条目。一般 ORDER BY 在这种情况下应该是可选的,但是我没有关于如何创建表模式的信息,所以我提到了它。如果它确实有您想要的数据,那么下面一行就足够了:
ORDER BY
SELECT * FROM aqn_data WHERE rowid = 25;
这也值得重新格式化你的 Cursor.execute() 语句到:
Cursor.execute()
c.execute("SELECT rowid, * FROM aqn_data WHERE rowid = ?", (25))
在这种特定的情况下没有什么区别,但是在代码中钻取这种做法还是有好处的,这样可以避免在实际依赖变量数据的代码中出现sql注入问题。千万不要对sqlite3对象使用python字符串格式!
muk1a3rh2#
您必须编写更多的代码来获取输出
正确的代码
cur = conn.cursor() cur.execute("SELECT rowid, * FROM aqn_data WHERE rowid = 25") rows = cur.fetchall() for row in rows: print(row)
2条答案
按热度按时间ljsrvy3e1#
您的execute语句似乎是正确的。
假设您的表实际上有一个名为rowid的列,而不是sqlite文档中定义的隐式列。
检查数据库中是否有
rowid = 25
.这将提供该表中的所有条目。一般
ORDER BY
在这种情况下应该是可选的,但是我没有关于如何创建表模式的信息,所以我提到了它。如果它确实有您想要的数据,那么下面一行就足够了:
这也值得重新格式化你的
Cursor.execute()
语句到:在这种特定的情况下没有什么区别,但是在代码中钻取这种做法还是有好处的,这样可以避免在实际依赖变量数据的代码中出现sql注入问题。千万不要对sqlite3对象使用python字符串格式!
muk1a3rh2#
您必须编写更多的代码来获取输出
正确的代码