在SQL中通过rowid获取值

2024-06-16 10:12:29 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在sqlite3中使用Rowid获取特定行中的值。 在我的示例中,我编写了python代码:

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

这个打印[] 我想打印第25行中的值


Tags: 代码from示例executedbdataconnectconn
2条回答

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

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)

您的execute语句似乎是正确的

假设您的表实际上有一个名为rowid的列,而不是SQLite documentation中定义的隐式列

检查您的数据库是否确实有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字符串格式

相关问题 更多 >