gpt4 book ai didi

python - python编码中的mysql

转载 作者:行者123 更新时间:2023-11-29 03:10:27 25 4
gpt4 key购买 nike

这个帖子和我在MySQL in Python: UnicodeEncodeError: 'ascii'的问题是一样的这只是为了把事情弄清楚。

我正在尝试将字符串保存到 MySQL 数据库,但出现错误:

File ".smart.py", line 51, in (number, text, 'smart', 'u')

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 25: ordinal not in range(128)

并且字符串保存在m['Text']

Lala*=#&%@<>_?!:;-'"/()¥¡¿

下面是代码片段

risk = m['Text']
msg = risk.encode('utf8')
text = db.escape_string(msg)

sql = "INSERT INTO posts(nmbr, \
msg, tel, sts) \
VALUES ('%s', '%s', '%s', '%s')" % \
(number, text, 'smart', 'u')

如果我尝试注释掉 SQL 查询并输入打印文本,它将打印出 Lala*=#&%@<>_?!:;-' "/()¥¡¿

该错误仅在处理SQL时遇到。

MySQL 编码设置为 utf8_unicode_ci。 (或者我应该改变这个吗?)

谢谢。

最佳答案

添加这些参数 MySQLdb.connect(..., use_unicode=1,charset="utf8")

创建游标

cur = db.cursor()

然后像这样执行:

risk = m['Text']
sql = """INSERT INTO posts(nmbr, msg, tel, sts) \
VALUES (%s, %s, %s, %s)"""
values = (number, risk, 'smart', 'u')
cur.execute(sql,values) #use comma to separate sql and values, this will ensure values are escaped/sanitized
cur.commit()

现在你不需要这两行了:

msg = risk.encode('utf8')
text = db.escape_string(msg)

关于python - python编码中的mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9331010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com