Python论坛  - 讨论区

标题:[python-chinese] [share] 向数据库中写入字符串,但是却不指定编码字符集

2006年11月10日 星期五 09:25

gashero harry.python在gmail.com
星期五 十一月 10 09:25:32 HKT 2006

昨晚调试PySQLite2时发现的。可以向数据库中存储一个字符串,而不需要指定字符集,只要对数据库的存取中,你对字符集有所把握即可。

具体做法就是向数据库保存字符串的时候使用buffer类型。比如一个插入数据的过程:

data="我在中国"
cur.execute("INSERT INTO tt VALUES (null,?);",(buffer(data),))
这就是可以执行成功的,并不需要转换编码。
同理,取出数据的时候,用str()函数转换成字符串就可以了。
使用buffer还可以向数据库中插入BLOB类型的数据。

这是一种并不规范的方法,在数据库中存储的字符串也不在是Unicode,而是原始编码数据,只是比以前方便一点而已。

-- 
从前有一只很冷的毛毛虫,他想获得一点温暖。而获得温暖的机会只有从树上掉下来,落进别人的领口。
片刻的温暖,之后便失去生命。而很多同类却连这片刻的温暖都没有得到就..
我会得到温暖么?小心翼翼的尝试,却还是会受到伤害。
我愿为那一刻的温暖去拼,可是谁愿意接受?

欢迎访问偶的博客:
http://blog.csdn.net/gashero

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月10日 星期五 09:30

yi huang yi.codeplayer在gmail.com
星期五 十一月 10 09:30:56 HKT 2006

还有一个缺点就是无法用数据库的管理程序进行管理了。

On 11/10/06, gashero <harry.python at gmail.com> wrote:
>
> 昨晚调试PySQLite2时发现的。可以向数据库中存储一个字符串,而不需要指定字符集,只要对数据库的存取中,你对字符集有所把握即可。
>
> 具体做法就是向数据库保存字符串的时候使用buffer类型。比如一个插入数据的过程:
>
> data="我在中国"
> cur.execute("INSERT INTO tt VALUES (null,?);",(buffer(data),))
> 这就是可以执行成功的,并不需要转换编码。
> 同理,取出数据的时候,用str()函数转换成字符串就可以了。
> 使用buffer还可以向数据库中插入BLOB类型的数据。
>
> 这是一种并不规范的方法,在数据库中存储的字符串也不在是Unicode,而是原始编码数据,只是比以前方便一点而已。
>
> --
> 从前有一只很冷的毛毛虫,他想获得一点温暖。而获得温暖的机会只有从树上掉下来,落进别人的领口。
> 片刻的温暖,之后便失去生命。而很多同类却连这片刻的温暖都没有得到就..
> 我会得到温暖么?小心翼翼的尝试,却还是会受到伤害。
> 我愿为那一刻的温暖去拼,可是谁愿意接受?
>
> 欢迎访问偶的博客:
> http://blog.csdn.net/gashero
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061110/8c556527/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月10日 星期五 11:48

gashero harry.python在gmail.com
星期五 十一月 10 11:48:21 HKT 2006

晕,确实是个严重的问题,谢谢,我以后会注意。
只是从学了编程以来第一次向数据库中存入BLOB字段的数据,有点兴奋,跟大家分享一下。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月12日 星期日 10:51

brightman fenyon在126.com
星期日 十一月 12 10:51:03 HKT 2006

gashero 写道:
> 晕,确实是个严重的问题,谢谢,我以后会注意。
> 只是从学了编程以来第一次向数据库中存入BLOB字段的数据,有点兴奋,跟大家分享一下。
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
我用python 操作mysql,由于mysql建的库是utf-8,我向其中插入数据时MySQLdb报 
告不能转化为utf-8.

data = data.decode("GBK").encode("UTF-8")
sqlstring = '''insert into rawdata(link,datatype,data) 
values('%s','%s','%s')''' % (rssurl,type,rssdata)
cur.execute(sqlstring)

  File "C:\Python24\Lib\site-packages\MySQLdb\cursors.py", line 146, in 
execute
    query = query.encode(charset)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 
191: ordina
l not in range(128)


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月12日 星期日 12:06

yi huang yi.codeplayer在gmail.com
星期日 十一月 12 12:06:05 HKT 2006

>
> 我用python 操作mysql,由于mysql建的库是utf-8,我向其中插入数据时MySQLdb报
> 告不能转化为utf-8.
>

这样试试:

cur.execute('SET NAME GBK')
sqlstring = '''insert into rawdata(link,datatype,data)
values('%s','%s','%s')''' % (rssurl,type,rssdata)
cur.execute(sqlstring)

-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061112/ae3cc84b/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号