python sqlite 插入的数据含有变量,结果不一致


 1 def insert():
 2     conn = sqlite3.connect("sqlite.db")
 3     print "open database passed"
 4     table_create = '''
 5                     CREATE TABLE COMPANY
 6                     (ID INT PRIMARY KEY,
 7                     NAME TEXT,
 8                     AGE INT,
 9                     ADDRESS CHAR(50),
10                     SALARY REAL
11                     );
12                     '''
13     conn.execute(table_create)

上面定义了一个表。

1   temp="2017-12-12"
2   paul="INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(1,%s,32,'CALIFORNIA',2000.00);" %temp  #这里用python的变量替换
3 conn.execute(paul)
4 conn.commit()
5 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);" %myname

 

另外一种方法更加简单: 就是在execute语句中把变量全部用(?) 表示,这样就不用每一个变量都使用“”  来添加。 

 

原问题地址:http://www.30daydo.com/question/18

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM