2024-10-04 05:28:22 发布
网友
我有一个包含三列的表,cell,trx和{}。 这是我要运行的查询:
cell
trx
db.execute("SELECT cell,trx FROM tchdrop").fetchall()
它给出正确的输出。在
但是当我尝试a = ("cell", "trx")然后
a = ("cell", "trx")
输出是[(u'cell', u'trx'), (u'cell', u'trx')](这是错误的)
[(u'cell', u'trx'), (u'cell', u'trx')]
我这样做是为了弄清楚如何动态地提取列,这是一个更大问题的一部分。在
占位符(?)python DB-API(如sqlite3)不支持传递列名,因此必须使用如下python字符串格式:
a = ("cell", "trx") query = "SELECT {0},{1} FROM tchdrop".format(*a) db.execute(query)
编辑:
如果不知道要传递的列的长度,可以执行以下操作:
该库将指定的值("cell", "trx")替换为它们的等效引用SQL,因此您得到的是SELECT "cell", "trx" FROM tchdrop。结果是正确的。在
("cell", "trx")
SELECT "cell", "trx" FROM tchdrop
使用?语法是不可能实现的。相反,您可以自己替换字符串。您可以使用正则表达式(如^[a-zA-Z_]$)检查列名以获得更高的安全性。在
?
^[a-zA-Z_]$
例如:
columns = ",".join(("cell", "trx")) db.execute("SELECT %s FROM tchdrop" % columns).fetchall()
占位符(?)python DB-API(如sqlite3)不支持传递列名,因此必须使用如下python字符串格式:
编辑:
如果不知道要传递的列的长度,可以执行以下操作:
^{pr2}$该库将指定的值
("cell", "trx")
替换为它们的等效引用SQL,因此您得到的是SELECT "cell", "trx" FROM tchdrop
。结果是正确的。在使用
?
语法是不可能实现的。相反,您可以自己替换字符串。您可以使用正则表达式(如^[a-zA-Z_]$
)检查列名以获得更高的安全性。在例如:
相关问题 更多 >
编程相关推荐