如何在Python中向MySQL表插入一行?

时间:2014-05-07 22:26:38

标签: python mysql

我创建了一个名称由变量定义的表,然后处理了一些我想要插入表中的文本。即使遵循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")

2 个答案:

答案 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)
       -------^