我想我要生气了,所以请您的帮助将不胜感激...
我正在尝试AWS的RDS,并且我设置了一个简单的MySQL数据库。
一张表:mytable:id(int,自动增量),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()
在MySQL Workbench中,插入作品我看到了该行。
选择总是返回-1!
我在选择中没有''我尝试过,但是我遇到了一个错误:
mysql.connector.errors.programmingerror:1064(42000):您有一个 SQL语法中的错误;检查与您相对应的手册 MySQL Server版本,用于正确的语法,在第1行中使用接近"%s"
我该如何完成这项工作?
谢谢!
您的查询获取%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, )