我正在使用python 2.7.6和sqlite3。 这里的代码部分必须创建名为goods的表:
c.execute("""create table goods(
Art varchar(12) primary key,
Name_G varchar(30),
Meas varchar(3),
Price_G double unsigned,
check (Meas in ('кг.','л.','шт.')))""")
不要因为这种方法而责怪我,这是运动要求。字段Meas只能包含三个字符串中的一个。它们列在约束中,它们是俄语。 此查询成功执行,但如果我检查数据库中的数据,我会看到它存储以下SQL:
CREATE TABLE goods(
Art varchar(12) primary key,
Name_G varchar(30),
Meas varchar(3),
Price_G double unsigned,
check (Meas in ('кг.','л.','шт.')))
正如你所看到的,它不是俄罗斯人。有没有方法在数据库中存储正确的数据? encode()方法,u''没有为我工作。
答案 0 :(得分:0)
以下说明适用于我:
alex@rhyme ~/tmp $ echo $LANG
ru_RU.UTF-8
alex@rhyme ~/tmp $ python
Python 2.7.6 (default, Feb 5 2014, 11:50:47)
[GCC 4.7.2 20121109 (ALT Linux 4.7.2-alt8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> db = sqlite3.connect('sample1.db')
>>> c = db.cursor()
>>> c1 = c.execute('PRAGMA encoding="UTF-8";')
>>> c1 = c.execute('CREATE TABLE sample (id INTEGER PRIMARY KEY AUTOINCREMENT, t VARCHAR(3) NOT NULL DEFAULT "руб");')
>>> c1 = c.execute('INSERT INTO sample DEFAULT VALUES;')
>>> db.commit()