如何在sqlite3中插入中文字符
发布时间:2020-12-12 20:04:27 所属栏目:百科 来源:网络整理
导读:使了一下sqlite3,如下: #-*-encoding:utf-8-*-import sqlite3def create_tables(dbname): conn = sqlite3.connect(dbname) cursor = conn.cursor() cursor.execute('''create table userinfo(name text,email text)''') conn.commit() cursor.close() conn.
使了一下sqlite3,如下:
#-*-encoding:utf-8-*- import sqlite3 def create_tables(dbname): conn = sqlite3.connect(dbname) cursor = conn.cursor() cursor.execute('''create table userinfo(name text,email text)''') conn.commit() cursor.close() conn.close() def drop_tables(dbname): conn = sqlite3.connect(dbname) cursor = conn.cursor() cursor.execute('''drop table userinfo''') conn.commit() cursor.close() conn.close() def insert(): users = ('腾讯qq','qq@example.com') conn = sqlite3.connect(dbname) cursor = conn.cursor() cursor.execute("insert into userinfo(name,email) values(?,?)",users) conn.commit() cursor.close() conn.close() def select(text): conn = sqlite3.connect(dbname) cursor = conn.cursor() print "select name from userinfo where email='%s'" % text for row in cursor.execute("select name from userinfo where email= ? ",(text,)): print row[0] if __name__ == '__main__': dbname = 'test.db' try: drop_tables(dbname) except: pass create_tables(dbname) insert() select("qq@example.com") drop_tables(dbname) 运行时出现下面的错误:
cursor.execute("insert into userinfo(name,users) sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings. 第一种,设置text_factory = str #-*-encoding:utf-8-*- import sqlite3 def create_tables(dbname): conn = sqlite3.connect(dbname) cursor = conn.cursor() cursor.execute('''create table userinfo(name text,'qq@example.com') conn = sqlite3.connect(dbname) conn.text_factory = str ##!!! cursor = conn.cursor() cursor.execute("insert into userinfo(name,)): print row[0] if __name__ == '__main__': dbname = 'test.db' try: drop_tables(dbname) except: pass create_tables(dbname) insert() select("qq@example.com") drop_tables(dbname) #-*-encoding:utf-8-*- import sqlite3 def create_tables(dbname): conn = sqlite3.connect(dbname) cursor = conn.cursor() cursor.execute('''create table userinfo(name text,email text)''') conn.commit() cursor.close() conn.close() def drop_tables(dbname): conn = sqlite3.connect(dbname) cursor = conn.cursor() cursor.execute('''drop table userinfo''') conn.commit() cursor.close() conn.close() def insert(): users = ('腾讯qq'.decode('utf8'),)): print row[0].encode('utf8') if __name__ == '__main__': dbname = 'test.db' try: drop_tables(dbname) except: pass create_tables(dbname) insert() select("qq@example.com") drop_tables(dbname) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |