python3.7連接sqlserver數據庫失敗報錯後解決方法
1、連接數據庫腳本
這是我連接sqlserver和mysql的代碼;數據庫連接信息是調用config.ini文件的信息;調用config.ini文件的信息的腳本不在這描述了
def get_conn(self):
try:
if self.sqltype == 'SqlServer':
conn = pymssql.connect(host=self.host, port=self.port, user=self.user, password=self.passwd,
database=self.database, charset=self.charset,autocommit=True)
else:
conn = pymysql.connect(host=self.host, port=self.port, user=self.user, password=self.passwd,
database=self.database, charset=self.charset,autocommit=True)
print('數據庫已連接!')
return conn
except Exception as e:
print('%s', e)
config.ini配置文件裏數據庫信息樣式如下:
[數據庫名稱xxxx]
host = xxxx
port = xxxx
user = xxxx
passwd = xxxx
db = xxxx
charset = xxxx
sqltype = SqlServer(可自行標記,爲了區分連接哪種數據庫的標誌)
或者
[數據庫名稱xxxx]
host = xxxx
port = xxxx
user = xxxx
passwd = xxxx
db = xxxx
charset = xxxx
sqltype = MySql(可自行標記,爲了區分連接哪種數據庫的標誌)
2、連接sqlserver數據庫失敗,報錯信息如下:
%s (20002, b’DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (ip:port)\n’)
出現問題的原因:charset未配置或者配置錯誤,都會導致數據庫連接失敗,報上面的問題;
解決問題的方案:在 connect代碼裏設置連接數據庫正確的charset,就可以連接上了;我連接數據庫時charset=utf8報錯了,然後將charset=CP936或者GBK(注意大小寫)就能正常連接了
sqlserver數據庫查詢charset名稱語句:select SERVERPROPERTY('Sqlcharsetname')
MySql數據庫查詢charset語句:show variables like '%character%'
,請參考該大神的博客:https://blog.csdn.net/huzecom/article/details/100089325?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase