python2中在sqlite3中插入中文


 1 # -*- coding: utf-8 -*-
 2 import sqlite3
 3 
 4 conn = sqlite3.connect('SWC_Perf_Info.db')
 5 cur = conn.cursor()
 6 
 7 test_sql1 = "INSERT INTO test (name) VALUES ('我愛中國')"    #gbk編碼,存入數據庫的時候顯示的是亂碼
 8 cur.execute(test_sql1)
 9 conn.commit()
10 
11 cursor = cur.execute("SELECT name from test")
12 for row in cursor:
13     print(row[0])    #因為讀取的是GBK編碼內容,所以可以直接顯示
14 
15 
16 test_sql2 = "INSERT INTO test (name) VALUES ('我愛中國')".decode('GBK')    #unicode編碼
17 cur.execute(test_sql2)
18 conn.commit()
19 
20 cursor = cur.execute("SELECT name from test")
21 for row in cursor:
22     print(row[0].decode('utf-8'))    #即使用的是Unicode寫入的數據庫,內部還是使用的UTF-8編碼存入,所以需要使用UTF-8解碼
23     print(row[0].decode('utf-8').encode('GBK'))    #輸出的時候可以使用Unicode輸出也可以使用本地的GBK輸出
24 
25 test_sql3 = test_sql2.encode('utf-8')    #utf-8編碼
26 cur.execute(test_sql3)
27 conn.commit()
28 
29 cursor = cur.execute("SELECT name from test")
30 for row in cursor:
31     print(row[0].decode('utf-8'))
32     print(row[0].decode('utf-8').encode('GBK'))

 

 1 select_sql1 = "SELECT name from test where name = '我愛中國'"    #以GBK格式查詢
 2 cursor = cur.execute(select_sql1)
 3 for row in cursor:
 4     print(row[0].decode('utf-8'))
 5     print(row[0].decode('utf-8').encode('GBK'))
 #查詢不到結果
6
7 select_sql2 = "SELECT name from test where name = '我愛中國'".decode('GBK') #以Unicode格式查詢 8 cursor = cur.execute(select_sql2) 9 for row in cursor: 10 print(row[0].decode('utf-8')) 11 print(row[0].decode('utf-8').encode('GBK'))
12     
13 select_sql3 = "SELECT name from test where name = '我愛中國'".decode('GBK').encode('utf-8')    #以utf-8格式查詢
14 cursor = cur.execute(select_sql3)
15 for row in cursor:
16     print(row[0].decode('utf-8'))
17     print(row[0].decode('utf-8').encode('GBK'))

 

總結下來寫入的時候可以使用Unicode或者UTF-8編碼的字符寫入數據庫

讀取輸出的時候使用UTF-8編碼或者GBK編碼的字符輸出

查詢的語句也必須是Unicode或者utf-8格式才能查詢到結果

 

UTF-8是可以支持直接的讀取或者輸出理想編碼格式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM