在循环中将字符串插入表中

时间:2019-06-13 08:09:10

标签: sql python-3.x sqlite

嗨,我正在尝试通过python3中的sqlite3在sqlite中创建表。 到目前为止,我得到的代码是:

import sqlite3
text="hello"
db = sqlite3.connect('C:/DB.db')
c = db.cursor()
c.execute("CREATE TABLE %s (sida)" % name)
for i in range(10):
    c.execute("INSERT INTO %s VALUES (%s)" % (name, str(text))) # This does not work
db.commit()
db.close()
c.close

将值从str(text)更改为i即可;

c.execute("INSERT INTO %s VALUES (%s)" % (name, i))         # This works

传递整数作为值有效,但不传递字符串。我一直在寻找解决方案,但被卡住了。

我得到的错误是:

  

c.execute(“插入%s值(%s)”%(name,str(text))   sqlite3.OperationalError:在“ a2”附近:语法错误

1 个答案:

答案 0 :(得分:1)

您应该为插入使用准备好的语句,将值绑定到存在的任何占位符:

c = db.cursor()
c.execute("CREATE TABLE %s (sida)" % name)
for i in range(10):
    c.execute("INSERT INTO %s VALUES (?)" % name, (str(text),))
db.commit()
db.close()
c.close

实际上,最好不要使表名称本身具有动态性。