Ⅰ python3連接MSSQL資料庫 中文亂碼怎麼解決
以前用php連mssqy時也經常出現中文亂碼(中文變問號)的問題,那時就明白是編碼沒設置好導航,現在的Python連mssql資料庫也同樣出現這問題,問題一樣,解決的辦法當然也會相似,現在我們來看看解決方法。
python一直對中文支持的不好,最近老遇到編碼問題,而且幾乎沒有通用的方案來解決這個問題,但是對常見的方法都試過之後,發現還是可以解決的,下面總結了常用的支持中文的編碼問題(這些方法中可能其中一個就能解決問題,也可能是多個組合)。
(1)、首先,要保證文件的開頭要加上編碼設置來說明文件的編碼
代碼如下
復制代碼
#encoding=utf-8
(2)、然後,在連接數據的連接參數里加上字元集說明查詢出的結果的編碼,這個不加的後果可能是查詢出的漢字字元都是問號
代碼如下
復制代碼
conn=pymssql.connect(server='.',user='',
password='',database='MyTest',charset='utf8')
(3)、設置python系統的默認編碼(對於文件來說,這招幾乎屢試不爽,呵呵~~)
代碼如下
復制代碼
import
sys
reload(sys)
sys.setdefaultencoding('utf8')
注意:上述編碼是「utf8」,而不是「utf-8」,我也沒弄明白,大部分情況下,這個無所謂的,但是這里我試了必須要是「utf8」
一個簡單的完整的python連接mssqlserver的例子如下(得安裝pymssql包):
代碼如下
復制代碼
#encoding:utf8
import
sys
reload(sys)
sys.setdefaultencoding('utf8')
import
pymssql
try:
conn=pymssql.connect(server='.',user='',
password='',database='MyTest',charset='utf8')
sql="select
*
from
UserInfo"
cur=conn.cursor()
cur.execute(sql)
data=cur.fetchall()
conn.close()
print
data
except
Exception,e:
print
e
運行結果如下:
代碼如下
復制代碼
[(u'20093501',
u'xb9xf9xbexb8',
u'u7537
',
35,
u'xb4xf3xcfxc0'),
(u'20093502',
u'xbbxc6xc8xd8',
u'u5973
',
34,
u'xc3xc0xc5xae'),
(u'20093503',
u'xc1xeexbaxfcxb3xe5',
u'u7537
',
25,
u'2Bxc7xe0xc4xea'),
(u'20093504',
u'xc8xcexd3xafxd3xaf',
u'u5973
',
24,
u'xc6xafxc1xc1')]
[Finished
in
0.2s]
雖然擺脫了問號和亂碼的困擾,但這仍不是我們想要的結果,但這個確實是正確的,因為結果是utf8編碼。這個現象確實詭異,請教了許多高手,得知,最好的結果就是逐個欄位查詢,才能顯示中文,整個查詢的話,會以utf8的格式顯示出來。
上述代碼中第14行data是整個查詢的結果,如果指定某個具體的欄位,如print
data[0][2](表示取查詢結果的第一行第三列的欄位的值),則會輸出中文。
其實不僅僅是mssqlserver資料庫,mysql(需下載MySQLdb包)、sqllite(python自帶的文件資料庫)、mongodb(需下載PyMongo包)等或者是普通文本文件也是類似的解決方案。
Ⅱ pycharm連接mssql報錯ValueError怎麼辦
要這樣寫:
pymssql.connect(host='資料庫伺服器地址',user='user',password='密碼',database='資料庫名稱',charset='utf8')
MSSQL是要密碼認證的,它不是SQLite這種輕量可不加密的資料庫。
Ⅲ 使用python pymssql連接 sql server報錯,怎麼解決
conn = pymssql.connect(host=r"localhost",user=r"sa",password=r"pwd",database=r"proction")
stack overflow 上有個類似的問題 有個答案是這樣的 你試試 沒用過mssql
Ⅳ python怎麼連接sqlserver
如果使用pyodbc,直接看2就可以了,可以略過1
1. Python連接mssql
ubuntu linux上
1.1
sudo apt-get install python
1.2 重啟終端
1.3
sudo apt-get --assume-yes update
sudo apt-get --assume-yes install freetds-dev freetds-bin
sudo apt-get --assume-yes install python-dev python-pip
sudo pip install pymssql
1.4
sudo vi /etc/freetds/freetds.conf
2.安裝pyodbc
2.1為了解決pyodbc.h:52:17: fatal error: sql.h: No such file or directory
sudo yum install unixODBC-devel.x86_64
然後:
sudo pip install pyodbc
2.2安裝MSSQL native client
2.3
編寫Python程序:
import pyodbc
conn = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};
SERVER=aaaa; UID=bbbb; PWD=ccc; DATABASE=ddd; Encrypt=yes;
TrustServerCertificate=no');
cursor = conn.cursor()
cursor.execute("select count(distinct d) as cnt from ddddd6 where day_id=20160531")
row = cursor.fetchone()
while row:
print str(row[0])
row = cursor.fetchone()
Ⅳ python3連接MSSQL資料庫 中文亂碼怎麼解決
在獲取數據之前,執行mysql的命令set names utf8;
同時在python的文件頭,加上
# -*- coding: utf-8 -*-
將這個文件也編碼為utf8
如果還是亂碼,就更改mysql的編碼.
Ⅵ 如何使用Python3.4連接MySQL
序號 描述
1 去github上下載pymysql的安裝包pymysql
2 解壓到某個盤符下
3 打開cmd窗口(win環境下),進入pymysql的根目錄下執行命令,python setup.py install
4 在程序里,導入pymysql
5 開始連接資料庫
資料庫操作的API文檔連接:http://legacy.python.org/dev/peps/pep-0249/
代碼如下:
Python代碼
__author__='qindongliang'
#導入pymysql的包
importpymysql
try:
#獲取一個資料庫連接,注意如果是UTF-8類型的,需要制定資料庫
conn=pymysql.connect(host='localhost',user='root',passwd='qin',db='person',port=3306,charset='utf8')
cur=conn.cursor()#獲取一個游標
cur.execute('select*fromperson')
data=cur.fetchall()
fordindata:
#注意int類型需要使用str函數轉義
print("ID:"+str(d[0])+'名字:'+d[1]+"性別:"+d[2])
cur.close()#關閉游標
conn.close()#釋放資料庫資源
exceptException:print("發生異常")
Java代碼
D:pythonpython.exeD:/pythonide/pythonprojectworkspace/python/mysql.py
ID:1名字:秦天性別:男
ID:2名字:王晶性別:女
Processfinishedwithexitcode0
原文http://qindongliang1922.iteye.com/blog/2096512
補充說明:
mysqldb作為python連接mysql資料庫的工具,但是mysqldb目前支撐的版本較低,安裝失敗。所以才嘗試pymysql,這個比較簡單易用
軟體下載地址:
python3.2.5:https://www.python.org/ftp/python/3.2.5/python-3.2.5.msi
pymysql3.0.5:https://pypi.python.org/packages/source/P/PyMySQL3/PyMySQL3-0.5.tar.gz
mysql:http://www.phpstudy.net/phpstudy/phpStudyLite.zip(為了方便安裝,我這里選擇phpstudy)
1、python安裝目錄設定為d:/python32
2、pymysql安裝方法為:解壓下載的文件,在cmd中運行: python setup.py install。
檢驗安裝安裝是否成功的方法:import pymysql 。 如果不報錯 說明安裝成功。
3、mysql安裝目錄為D:/phpStudy/MySQL。為避免更多配置問題,可在啟動phpstudy後,將其設為系統服務
4、基本操作:
(1)導入pymysql: import pymysql
(2)連接資料庫: conn=pymysql.connect(host='localhost',user='root',passwd='root',db='ere',charset='utf8') 務必注意各等號前面的內容!charset參數可避免中文亂碼
(3)獲取操作游標:cur=conn.cursor()
(4)執行sql語句,插入記錄:sta=cur.execute("insert 語句") 執行成功後sta值為1。更新、刪除語句與此類似。
(5)執行sql語句,查詢記錄:cur.execute("select語句") 執行成功後cur變數中保存了查詢結果記錄集,然後再用循環列印結果:
for each in cur:
print(each[1].decode('utf-8')) # each[1] 表示當前游標所在行的的第2列值,如果是中文則需要處理編碼
Ⅶ 您好,請問你的python連接資料庫的問題是怎麼解決的
mssql 是不是可以考慮直接用 os.popen,pymssql並不是很好用,老是會有大大小小的問題
defdbtest(dbpasswd):
#檢查資料庫是否可以登錄
cmd="osql-Unetcafe-P"+dbpasswd+"-Q"+"""+
""+"""
popenstr=os.popen(cmd)
popenstrreadlines=popenstr.readlines()
iflen(popenstrreadlines)==0:return1
returnpopenstrreadlines
看一下這個,很久前寫的
網頁鏈接
Ⅷ 用python 實現一個批量列印的功能
你這些都是業務邏輯,你應該自己嘗試實現,遇到具體技術問題再提
Ⅸ python用pymssql連接資料庫時出現未知錯誤的問題
import pymssql
conn=pymssql.connect(host="localhost",user="sa",password="pwd",database="proction",charset='utf8')
缺少後邊的charset是很容易報錯的
Ⅹ python3 連接 sql server 2014
真巧,剛剛做過,鏈接的也是MSSQL2014的資料庫,並且測試是成功的
importpymssql
conn=pymssql.connect(host='主機名或IP',user='資料庫用戶名',password='資料庫用戶密碼',database='資料庫名',charset='utf8')
cursor=conn.cursor()
ifnotcursor:
raise(NameError,"連接資料庫失敗")
strsql="select*from表"
try:
cursor.execute(strsql)#執行SQL語句
conn.commit()#修改數據後提交事務
except:
print(0,"錯誤:"+strsql)
pass
finally:
print(l,"成功!")
pass
cursor.close()#關閉對象
conn.close()#關閉資料庫連接
import pymssql這句話必須有,主要是pymssql必須要安裝上,可以使用pip list來查看是否安裝