我在做一个需要用到数据库的python项目,结果如果使用pymysql则会导致中文输入乱码,如果使用pymssql则无法导入方法。
import pymssql
from pymssql import *
serverName = '127.0.0.1'
userName = 'root'
passWord = '123456'
dataBase = "dice"
conn = pymssql.connect(serverName, userName, passWord, dataBases)
#pymssql.connect(serverName, userName, passWord, "diceglita")
cur = conn.
pymssql._pymssql.OperationalError: (18456, b"\xe7\x94\xa8\xe6\x88\xb7 'root' \xe7\x99\xbb\xe5\xbd\x95\xe5\xa4\xb1\xe8\xb4\xa5\xe3\x80\x82DB-Lib error message 20018, severity 14:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (127.0.0.1)\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (127.0.0.1)\n")
尝试过在pymysql中使用utf8编码与GBK,但是并不能解决乱码,看到网上说cp936可以,但是pymysql中没有找到cp936编码,看到网上说pymssql中有,但是并无法使用pymssql
能够输入中文不乱码
可以调用下面的函数,连接sql server; 中文乱码问题 编码使用utf-8就可以, 你看下你数据库的字段是否为nvarchar, ntext?
```python
def exec_sql_server(sql):
server = '10.10.80.124:1433'
database = 'jz_doc_system'
user = 'sa'
password = 'atue@123'
try:
print(f'查询SQL:{sql}')
db = pymssql.connect(server, user, password, database, charset='utf8') # 连接到sql server数据库 charset='utf8'
cur = db.cursor() # 获取该数据库的游标
cur.execute(sql) # 执行语句
except Exception as e:
print(e)
else:
result = cur.fetchall() # get result
db.commit() # 一定要commit,pymssql包默认是需要手动commit的,否则事务不生效
db.close() # 关闭数据库连接
return result
```