我创建了一个名称由变量定义的表,然后处理了一些我想要插入表中的文本。即使遵循this StackOverflow example,我也很难找到正确的语法。以下是代码片段:
# Open database connection
db = MySQLdb.connect("localhost","root","menagerie","haiku_archive" )
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Create table using execute() method.
sql = "CREATE TABLE IF NOT EXISTS " + table_name + """
(haiku_text VARCHAR(120),
date_written CHAR(22))"""
cursor.execute(sql)
.
.
# SQL query to INSERT a haiku into the selected table
cursor.execute('''INSERT into ' + table_name + '(haiku_text, date_written) values (%s, %s)''', (haiku_text, date_written))
# Commit your changes in the database
db.commit()
# disconnect from server
db.close()
我故意不包括处理,这主要涉及打开文本文件并执行各种条带,条带,连接等,以便在插入表格之前将文本编辑为所需的格式。如果它有用,我可以加入它。
我得到的错误并不是特别有用 - 至少对我而言:
_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 '' + table_name + '(haiku_text, date_written) values ('the old pond<br>a frog ' at line 1")
答案 0 :(得分:0)
通过将语句包含在三引号中,您可以确保“into”之后的单引号不关闭字符串。这意味着整个文本被视为一个文字字符串,这就是你在错误信息中看到的原因。
根本没有理由在这里使用三重引号。只需使用正常的单引号:
cursor.execute('INSERT INTO ' + table_name + ' (haiku_text, date_written) VALUES (%s, %s)', (haiku_text, date_written))
(另请注意,我在列名开头之前添加了一个空格。)
答案 1 :(得分:0)
我相信你需要一个表名后的空格:
table_name + ' (haiku_text, date_written)
-------^