| ID|单元|克|公里|
| --|--|--|--|
| 1 |克| 10 | 20 |
| 2 |公里| 100 | 500 |
con=sqlite3.connect(database='database.db')
cur=con.cursor()
try:
cur.execute("SELECT ID,Unit FROM Product")
rows=cur.fetchall()
for row in rows:
print(row[1])
cur.execute("SELECT Unit,? FROM Product WHERE ID=?",(row[1],row[0],))
rows2=cur.fetchall()
print(rows2)
我可以为执行选择列定义一个字符串吗?在我的例子中,下面的单位定义采取哪个单位列,并写入表。
1条答案
按热度按时间disho6za1#
是的-但SQLite Python连接器上可用的字符串替换不会替换列名:它仅用于数据占位符。
要使用动态列名或表名(或SQL语法中的任何其他动态机制),只需在调用
cur.execute
之前使用另一种机制格式化字符串。例如,使用f字符串:
请记住,当使用SQL连接器插值时,它会自动转义数据,从而避免任何SQL注入尝试。当你在调用之前插入数据时,你必须注意这一点。通常,这些数据来自受控环境,但是,例如,如果列名来自某些不受信任的输入,则必须自己进行转义。