2024-09-26 18:12:26 发布
网友
如何在sqlite3中使用Rowid获取特定行中的值。 在我的示例中,我编写了python代码:
conn = sqlite3.connect('database.db') c = conn.cursor() c.execute("SELECT rowid, * FROM aqn_data WHERE rowid = 25")
这个打印[] 我想打印第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的条目
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字符串格式
您必须编写更多的代码来获取输出
正确代码
您的execute语句似乎是正确的
假设您的表实际上有一个名为rowid的列,而不是SQLite documentation中定义的隐式列
检查您的数据库是否确实有
rowid = 25
的条目这将提供该表中的所有条目。一般来说
ORDER BY
在这种情况下应该是可选的,但是我没有关于如何创建表模式的信息,所以我提到了它如果它确实有您想要的数据,那么下面的行就足够了:
还值得将
Cursor.execute()
语句重新格式化为:在这种特定情况下,这没有什么区别,但再次强调,最好将这种做法深入到代码中,以避免在实际依赖变量数据的代码中出现SQL注入问题。不要对sqlite3对象使用python字符串格式
相关问题 更多 >
编程相关推荐