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