python sqlite 插入的数据含有变量,结果不一致
def insert(): conn = sqlite3.connect("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的变量替换 conn.execute(paul) conn.commit() conn.close()
生成了一个数据库后,查看里面的数据,发现 ID=1 下的name值是1993。 开始的时候觉得很奇怪。 记过不断替换,后面调试才发现了问题。
尝试直接打印paul语句:
print paul
输出的是:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(1,2017-12-12,32,'CALIFORNIA',2000.00);
看到了吗?
2017-12-12
这样看来就知道问题了,原来语句中如果是字符的话,应该要加入“”。 问题出在这里。
所以 在变量替换语句中 添加一个 “”就 把问题解决了。
paul="INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(1,\"%s\",32,'CALIFORNIA',2000.00);" %temp
另外一种方法更加简单: 就是在execute语句中把变量全部用(?) 表示,这样就不用每一个变量都使用“” 来添加。
可以参照原问题。