插入多行中文字符时的sqlite,sqlalchemy和pandas

时间:2016-10-23 16:09:03

标签: pandas sqlalchemy

在Python 2.7中 使用sqlite3:

<>>>>>>&gt <<<<
form(..)

使用sqlalchemy:

connection = sqlite3.connect('History_1.db')
connection.text_factory=str
cursor =  connection.cursor()
cursor.executemany('insert into INDEX_BASIC_TABLE (code,name) values (?,?)', [("399333", "1wwo我wal阿斯蒂芬回家看"),("399333", "1阿道夫"),("399333", "1")])
connection.commit()
cursor.close()
connection.close()
<<<<<<<< <<<
engine = create_engine('sqlite:///1.db', echo=engine_echo)
connection = engine.connect()
connection.text_factory=str
<<<<<<<<< ;<<<
connection.execute('insert into INDEX_BASIC_TABLE (code,name) values ("399333", "我")')
connection.execute('insert into INDEX_BASIC_TABLE (code,name) values ("399333", "的我"),("399333", "的我")')

使用pandas,如果df中的中文字符df是pandas对象,则无法执行以下操作:

connection.execute('insert into INDEX_BASIC_TABLE (code,name) values (?,?)', [("399333", "1wwo我wal阿斯蒂芬回家看"),("399333", "1阿道夫"),("399333", "1")])
connection.close()

以上所有'我不能做'会产生以下错误: ProgrammingError:(sqlite3.ProgrammingError)除非使用可解释8位字节串的text_factory(如text_factory = str),否则不得使用8位字节串。强烈建议您只需将应用程序切换为Unicode字符串。

为什么呢?是sqlite3的orignial语句可以做的那些bug,但sqlachemy和pandas不能做?或者我该如何解决这些问题? 谢谢!

0 个答案:

没有答案