pymysql插入中文資料亂碼問題

2021-08-19 13:30:05 字數 2018 閱讀 1748

首先要確保pymysql的配置檔案編碼為utf8,否則就會報出以下錯誤

unicodeencodeerror: 'latin-1' codec can't encode characters in position 9-13: ordinal not in range(256)
配置檔案在pymysql模組對應的安裝目錄,我的

linux下為/usr/local/lib/python3.5/dist-packages/pymysql

windows下為d:\python35\lib\site-packages/pymysql

我們開啟該目錄,會發現乙個名為connections.py的檔案,然後我們通過編輯器開啟檔案,通過搜尋"charset=",發現如下所示的**:

def __init__(self, host=none, user=none, password="",

database=none, port=0, unix_socket=none,

charset='', sql_mode=none,

read_default_file=none, conv=none, use_unicode=none,

client_flag=0, cursorclass=cursor, init_command=none,

connect_timeout=10, ssl=none, read_default_group=none,

compress=none, named_pipe=none, no_delay=none,

autocommit=false, db=none, passwd=none, local_infile=false,

max_allowed_packet=16*1024*1024, defer_connect=false,

auth_plugin_map={}, read_timeout=none, write_timeout=none,

bind_address=none, binary_prefix=false):

**中,charset引數可以設定編碼,此時我們將編碼設定為"utf8"(注意不是utf-8),修改後儲存,如下所示:

def __init__(self, host=none, user=none, password="",

database=none, port=0, unix_socket=none,

charset='utf8', sql_mode=none,

read_default_file=none, conv=none, use_unicode=none,

client_flag=0, cursorclass=cursor, init_command=none,

connect_timeout=10, ssl=none, read_default_group=none,

compress=none, named_pipe=none, no_delay=none,

autocommit=false, db=none, passwd=none, local_infile=false,

max_allowed_packet=16*1024*1024, defer_connect=false,

auth_plugin_map={}, read_timeout=none, write_timeout=none,

bind_address=none, binary_prefix=false):

修改了pymysql的配置檔案之後,可能會遇到pymysql.err.internalerror

的錯誤,出現該錯誤的原因是mysql表中各列的編碼問題,

將編碼修改為utf8後,問題完美解決。

pymysql插入資料

在使用pymysql進行提交資料的時候,必須使用事務進行提交,如下 import pymysql 連線資料庫 db pymysql.connect host ip port port,user root password root charset utf8 database db name 建立游標...

php插入資料 mysql 中文亂碼

1 在php頁面中寫入以下內容 mysql query set names utf8 connect 或者 mysql set charset utf8 conn 2 資料庫一定是和php頁面具有相同的編碼格式,此處用utf8 3 在php內容中加入 echo 能夠有效的改變顯示頁面時出現亂碼,如果...

oracle插入資料中文亂碼問題

oracle插入資料中文亂碼問題解決 1.檢視伺服器端編碼 select userenv language from dual 我實際查到的結果為 american america.zhs16gbk 2.執行語句 select from v nls parameters 檢視第一行中paramete...