#-*-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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。