【发布时间】:2013-01-20 15:27:08
【问题描述】:
我正在尝试生成一个变量,我可以使用该变量将多行插入 MySQL 数据库或保存到文件中。
由于我是 python 新手,我的脑海里现在嗡嗡作响着我必须学习的所有新概念,我正在寻找一点保证,我的方法是一个好的方法。
将多个项目插入表的 SQL 语法如下:
INSERT INTO 'tablename' ('column1', 'column2') VALUES
('data1', 'data2'),
('data3', 'data4'),
('data5', 'data6'),
('data7', 'data8');
这是我的代码:
import shelve
shelf = shelve.open('test.db', flag='r')
sql = "INSERT INTO 'myTableName' ( "
sql += ", ".join(shelf.itervalues().next())
sql = " ) VALUES "
for s in shelf:
sql += "( "
sql += ', '.join(['\'%s\'' % ( value ) for (key, value) in shelf[s].items()])
sql += " ),"
shelf.close()
print sql
它几乎可以工作(它有一个尾随,而不是一个 ; 在最后的 sql 添加)但我确信必须有一个更简洁的方法。你能告诉我它是什么吗?
【问题讨论】:
-
一个提示,不要用单引号将 tableName 括起来,因为它是标识符而不是字符串文字。
-
JW,你的意思是我应该用“INSERT INTO myTableName (”代替吗?
-
是的,或者如果您想安全使用反引号,“INSERT INTO `tablename` (`column1`, `column2`) VALUES....”以及 columnNames
-
谢谢你,JW,我不知道这一点,因为我只是一个初学者。我会将其添加到我不断增长的要阅读的内容列表中。
-
在需要时使用反引号,例如当您使用保留关键字时,并且您的表或列名称上有空格或类似“hello-world”的内容
标签: python mysql sql database insert