Ale*_*ley 7 python postgresql psycopg2
我在psycopg2中执行一个链接到PostgreSQL数据库的查询.这是有问题的代码:
with open('dataFile.txt', 'r') as f:
lines = f.readlines()
newLines = [line[:-1] for line in lines]
curr=conn.cursor()
lineString = ','.join(newLines)
curr.execute("SELECT fields.fieldkey FROM fields LEFT JOIN zone ON zone.fieldkey=fields.fieldkey WHERE zone.zonekey = %s;", (newLines[0]))
rows = curr.fetchall()
Run Code Online (Sandbox Code Playgroud)
连接到DB没有问题,行[0]的类型肯定是字符串,我检查了.我的字符串格式的语法有问题吗?
我得到的错误,澄清是这样的:
TypeError: not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud)
Clo*_*eto 15
之后必须有一个逗号lines[0]才能成为一个元组.
curr.execute("""
SELECT fields.fieldkey
FROM fields
LEFT JOIN zone ON zone.fieldkey=fields.fieldkey
WHERE zone.zonekey = %s;
""", (lines[0],))
Run Code Online (Sandbox Code Playgroud)
由于该execute方法需要序列(或映射),因此它会迭代您提供的括号内的字符串.因此有必要明确地将其作为一个元组.可以使用以下tuple功能获得相同的结果,代码更清晰:
(tuple(lines[0]))
Run Code Online (Sandbox Code Playgroud)