## COMMENT OUT below just for reference
""
cursor.execute ("""
CREATE TABLE yellowpages
(
business_id BIGINT(20) NOT NULL AUTO_INCREMENT,
categories_name VARCHAR(255),
business_name VARCHAR(500) NOT NULL,
business_address1 VARCHAR(500),
business_city VARCHAR(255),
business_state VARCHAR(255),
business_zipcode VARCHAR(255),
phone_number1 VARCHAR(255),
website1 VARCHAR(1000),
website2 VARCHAR(1000),
created_date datetime,
modified_date datetime,
PRIMARY KEY(business_id)
)
""")
""
## TOP COMMENT OUT (just for reference)
## code
website1g = "http://www.triman.com"
business_nameg = "Triman Sales Inc"
business_address1g = "510 E Airline Way"
business_cityg = "Gardena"
business_stateg = "CA"
business_zipcodeg = "90248"
phone_number1g = "(310) 323-5410"
phone_number2g = ""
website2g = ""
cursor.execute ("""
INSERT INTO yellowpages(categories_name, business_name, business_address1, business_city, business_state, business_zipcode, phone_number1, website1, website2)
VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s')
""", (''gas-stations'', business_nameg, business_address1g, business_cityg, business_stateg, business_zipcodeg, phone_number1g, website1g, website2g))
cursor.close()
conn.close()
我一直收到此错误
File "testdb.py", line 51
""", (''gas-stations'', business_nameg, business_address1g, business_cityg, business_stateg, business_zipcodeg, phone_number1g, website1g, website2g))
^
SyntaxError: invalid syntax
任何想法为什么?
感谢您的帮助
更新#2,我删除了“categories_name”上的双引号,但现在甚至
import MySQLdb
conn = MySQLdb.connect(host="localhost",port=22008,user="cholestoff",passwd="whoami",db="mydatabase")
cursor = conn.cursor()
## Find mysql version
cursor.execute ("SELECT VERSION()")
row = cursor.fetchone()
print "server version:", row[0]
website1g = "http://www.triman.com"
business_nameg = "Triman Sales Inc"
business_address1g = "510 E Airline Way"
business_cityg = "Gardena"
business_stateg = "CA"
business_zipcodeg = "90248"
phone_number1g = "(310) 323-5410"
phone_number2g = ""
cursor.execute ("""
INSERT INTO yellowpages(categories_name, business_name)
VALUES ('%s','%s')
""", ('gas-stations', business_nameg))
cursor.close()
conn.close()
仍然出现此错误
server version: 5.1.33-community
Traceback (most recent call last):
File "testdb.py", line 23, in <module>
""", ('gas-stations', business_nameg))
File "C:\Python26\lib\site-packages\MySQLdb\cursors.py", line 173, in execute
self.errorhandler(self, exc, value)
File "C:\Python26\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_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 'gas-stations'',''Triman Sales Inc'')' at line 2")
再次感谢您的帮助
答案 0 :(得分:2)
我认为你的问题在这里:
''gas-stations''
这会产生语法错误。您可能想要使用一组引号:
'gas-stations'
如果要将值'gas-stations'
插入包含引号的数据库中,则可以转义引号或用双引号而不是单引号括起字符串:
"'gas-stations'"
“向上箭头”指向错误位置的原因是因为您的线条很长,以至于它在您的控制台上包裹。缩短线条,或者扩大控制台窗口以查看错误的确切位置。
答案 1 :(得分:1)
对于您的第二个问题,您需要丢失VALUES子句中的所有单引号字符...应该看起来像VALUES (%s,%s)
而不是VALUES ('%s','%s')
。
一般规则非常简单:对于每个参数,在SQL语句中都有一个放置标记(在mySQLdb的情况下,这是%s
),并在参数元组中提供一个Python表达式。然后向后倾斜,让界面软件为您做正确的事情。这包括正确引用字符串。不要试图自己做。特别是,字符串表达式应该是您希望稍后检索的内容。
示例:加油站的business_name
是“O'Reilly的Pump'n'Go”作为Python字符串常量。这将在构造的SQL中以...VALUES(...,'O''Reilly''s Pump''n''Go',...
结束,而不必考虑它。
答案 2 :(得分:0)
您不能使用加倍的单引号(即''gas-stations''
) - 只使用单引号('gas-stations'
)或实际双引号("gas-stations"
)。
答案 3 :(得分:0)
我也遇到了这样的错误,我通过在值下用%s替换'%s'来解决它。
VALUES(%s,%s)