我有以下代码:
import psycopg2
import psycopg2
conn = psycopg2.connect(database = 'xxxx', user = 'xxxx',password = 'xxxx',host = 'localhost', port = '5432')
cur = conn.cursor()
carl = 'Sioux Quartzite'
sql = '''INSERT INTO GEOLOGY (FORM_NAME) VALUES (%s);''',(carl)
cur.execute(sql)
conn.commit()
conn.close()
从Python返回的错误(QGIS中的错误)给了我以下错误代码:
很明显我是一个新手。我尝试了括号的每种组合,并尝试使用该论坛上接近的答案。我想做的就是将“carl”的值(即字符串“Sioux Quartzite”)插入到 PostGreSQL 中。我所有的选择都出现了类似的错误,只是sql语句让我困惑。
谢谢
Traceback (most recent call last):
File "C:\PROGRA~1\QGIS32~1.3\apps\Python39\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 1, in <module>
File "<string>", line 69, in <module>
TypeError: argument 1 must be a string or unicode object: got tuple instead
您的 sql 值是一个元组而不是字符串。
你可以像这样替换它以获得字符串:
sql = f'''INSERT INTO GEOLOGY (FORM_NAME) VALUES ({carl});'''
或
sql = '''INSERT INTO GEOLOGY (FORM_NAME) VALUES (%s);'''%(carl)
您有多种方法可以做到这一点。
这样这个错误信息就不会再出现了。