gpt4 book ai didi

Python 和 mySQL,INSERT 有效但 SELECT 返回 -1...!

转载 作者:行者123 更新时间:2023-11-29 06:27:08 24 4
gpt4 key购买 nike

我觉得我快要疯了,所以请你帮忙...

我正在试验来自 AWS 的 RDS,我已经设置了一个简单的 MySQL 数据库。

一个表:MyTable: id (int, auto increment), col1 (varchar(64)), col2 (int).

我尝试了以下代码,但无法正常工作:

myString = base64.standard_b64encode("myTestString")
myInt = 0

config = {
'user': db_username,
'password': db_password,
'host': db_host,
'database': db_database,
'raise_on_warnings': True,
'charset' :'utf8',
}

cnx = mysql.connector.connect(**config)

cursor1 = cnx.cursor()
SQLa = ("INSERT INTO myTable (col1, col2) VALUES (%s, %s)")
SQLav = (myString, myInt)
cursor1.execute(SQLa, SQLav)
cnx.commit()

cursor2 = cnx.cursor()
SQLq = ("SELECT id, col1, col2 FROM myTable WHERE col1 = '%s'")
SQLv = (myString)
cursor2.execute(SQLq, SQLv)

print cursor2.rowcount

rows = cursor2.fetchall()
for row in rows:
print(row)

cursor1.close()
cursor2.close()
cnx.close()

INSERT 有效,在 MySQL Workbench 中我看到添加的行。

尽管 SELECT 总是返回 -1!

我试过在 SELECT 中不使用 '',但出现错误:

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 1

我怎样才能使这项工作?

谢谢!

最佳答案

您的查询采用 %s 并将其包装在 '' 中,这意味着 mysql 连接器将其视为字符串文字,而不是要替换为您的值的占位符。删除 %s 周围的 '',它应该可以正常工作。

SQLq = ("SELECT id, col1, col2 FROM myTable WHERE col1 = '%s'")

成为

SQLq = ("SELECT id, col1, col2 FROM myTable WHERE col1 = %s")

另外,SQLv = (mystring) 并没有变成一个元组,它仍然是一个字符串要使 SQLv 成为一个元组,你必须添加一个逗号(不是很直观)

SQLv = (mystring, )

关于Python 和 mySQL,INSERT 有效但 SELECT 返回 -1...!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30302634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com