无法从_mysqlpython包执行sql插入
我正在尝试使用python的_Mysql包向Mysql表插入一个查询。我写的查询是:无法从_mysqlpython包执行sql插入,python,mysql,Python,Mysql,我正在尝试使用python的_Mysql包向Mysql表插入一个查询。我写的查询是: que = '''insert into all_prices(date,market,commodity,variety,arrival,Minimum_Price,Maximum_Price,Modal_Price,source,state)values('''+str(a)+''','''+market_name+''','''+commodity+''','''+variety+''','''+arri
que = '''insert into all_prices(date,market,commodity,variety,arrival,Minimum_Price,Maximum_Price,Modal_Price,source,state)values('''+str(a)+''','''+market_name+''','''+commodity+''','''+variety+''','''+arrival+''','''+Min_Price+''','''+Max_Price+''','''+Modal_Price+''','''+'''delagrimarket,delhi)'''
db.query(que)
que的值之一是:
que = insert into all_prices(date,market,commodity,variety,arrival,Minimum_Price,Maximum_Price,Modal_Price,source,state)values(1,azadpur,Apple,Royal Delicious,899,6000,11000,8200,delagrimarket,delhi)
但我得到了一些错误,比如:
_mysql_exceptions.ProgrammingError: (1064, "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 'Delicious,899,6000,11000,8200,delagrimarket,delhi)' at line 1")
有人能帮你解决这个问题吗。你可以试试这个:
que = '''
insert into
all_prices
(date, market, commodity, variety, arrival, Minimum_Price, Maximum_Price, Modal_Price, source, state)
values('{0}', '{1}', {2}, '{3}', '{4}', '{5}', '{6}', '{7}', 'delagrimarket', 'delhi')'''
.format(str(a), market_name, commodity, variety, arrival, Min_Price, Max_Price, Modal_Price)
db.query(que)
更清洁的办法是:
vals = (str(a), market_name, commodity, variety, arrival, Min_Price, Max_Price, Modal_Price)
que = '''
insert into
all_prices
(date, market, commodity, variety, arrival, Minimum_Price, Maximum_Price, Modal_Price, source, state)
values('{0}', '{1}', {2}, '{3}', '{4}', '{5}', '{6}', '{7}', 'delagrimarket', 'delhi')
'''
db.query(que.format(*vals))
如果希望使用不同的值多次执行同一查询,则第二种方法非常有用
查看此文件以了解有关string.format的更多信息。更好地使用类似的字符串格式
que = '''insert into all_prices(date,market,commodity,variety,arrival,Minimum_Price,Maximum_Price,Modal_Price,source,state)values(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'''
vals = (str(a), market_name, commodity, variety, arrival, Min_Price, Max_Price, Modal_Price, "delagrimarket", "delhi")
con.query(que % values)
有关字符串格式的更多信息,请查看。将每个值包装在
''
之间,如('value1','value2')
我回答了这个问题,认为它是用于PHP的。我删除了我发布的答案。就mysql而言,值必须在''