python sqlite 插入的数据含有变量,结果不一致
代码如下:
最终得到的结果是,id=1的name不是2017-12-12,而是一个乱的1996。
为什么
def insert():
conn = sqlite3.connect("rocky_sqlite.db")
print "open database passed"
table_create = '''
CREATE TABLE COMPANY
(ID INT PRIMARY KEY,
NAME TEXT,
AGE INT,
ADDRESS CHAR(50),
SALARY REAL
);
'''
conn.execute(table_create)
temp="2017-12-12"
paul="INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(1,%s,32,'CALIFORNIA',2000.00);"
%temp #这里用python的变量替换
allen="INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(2,'ALLEN',72,'CALIFORNIA',20500.00);"
teddy="INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(3,'TEDDY',732,'CALIFORNIA',52000.00);"
mark="INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(4,'MARK',327,'CALIFORNIA',3000.00);"
conn.execute(paul)
conn.execute(allen)
conn.execute(teddy)
conn.execute(mark)
conn.commit()
conn.close()
最终得到的结果是,id=1的name不是2017-12-12,而是一个乱的1996。
为什么
没有找到相关结果
已邀请:
1 个回复
李魔佛 - 公众号:可转债量化分析 【论坛注册:公众号后台留言邮箱】
赞同来自:
编译器实际解释 的语句是 :
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(1,2017-12-12,32,'CALIFORNIA',2000.00);
而表里定义的是
table_create = ''' CREATE TABLE COMPANY (ID INT PRIMARY KEY, NAME TEXT, AGE INT, ADDRESS CHAR(50), SALARY REAL ); '''
Name是text类型,现在变成了一个非int,非字符,所以才会出错
使用 ?,来替代%s ,或者类似的变量。
或者在原来语句添加一个引号。
paul="INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(1,\"%s\",32,'CALIFORNIA',2000.00);" %temp