❶ 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包)等或者是普通文本文件也是類似的解決方案。
❷ python怎樣將數據存入mysql資料庫
下載mysql.connector庫
然後把爬蟲爬到的數據通過mysql裡面的insert語句查到資料庫,當然也可以建表,一般我沒用python建表 是先建好再寫數據的
import mysql.connector
conn = mysql.connector.connect(
user='root',
password='root',
host='127.0.0.1',
port='3306',
database='test_demo'
)
cursor = conn.cursor()
cursor.execute("INSERT INTO test_user(`uuid`,`user_name`,`user_level`) VALUES (%s,%s,%s)",[id, user_name, user_level])
cursor.execute("INSERT INTO tieba_user_detail(`user_name`,`user_exp`,`user_sex`,`tieba_age`,`tieba_note`,`user_favorites`,`user_fans`) VALUES (%s,%s,%s,%s,%s,%s,%s)",[user_name,user_exp,user_sex, tieba_age,tieba_note, user_favorites, user_fans])
print('************** %s %s 數據保存成功 **************'%(user_rank,user_name))
conn.commit()
cursor.close()
❸ python向資料庫pymssql插入數據,id自動增長怎麼辦
資料庫創建表時,設置主鍵為自增,插入式就不能在設置id了,有資料庫保證,和編程語言無關
❹ python中pymssql如何向sql server插入數據 插入的值可以用變數替換
conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
cur = self.conn.cursor()
insertSql = "insert into WeiBo([UserId],[WeiBoContent],[PublishDate]) values(%s,'%s『,'%s')" %(1,2,3).encode("utf8")
cur.execute(insertSql)
❺ python pymysql 怎麼插入數據
importMySQLdb
conn=MySQLdb.connect(host='localhost',
user='db_user',
passwd='db_passwd',
db='db_name',
port=3306)
cur=conn.cursor()
cur.execute('INSERTINTO`uid`(`id`,`key`)VALUES(%s,%s)'
,(1234,"45678")
)
conn.commit()
conn.close()
❻ python 把list元素插入資料庫
有錯最好貼一下報錯內容
看一下story[0]的類型,print type(story[0])
%s,代表是字元串,如果不是str類型的話,轉換一下.
sql = "INSERT INTO qsbk(pagenum) VALUES ('%s')" %(str(story[0]))
❼ python 在MSSQL中insert into 的問題
這樣試試:
resultcur.execute("insert into dashboard values ('%s')" %(x))
❽ python 讀取本地數據然後插入到另一個資料庫中
classBuffer(object):
MAXSIZE=8192
def__init__(self,conn,sql):
self.conn=conn
self.sql=sql
self.buffer=[]
defappend(self,data):
self.buffer.append(data)
iflen(self.buffer)>self.MAXSIZE:
self.flush()
defflush(self):
data,self.buffer=self.buffer,[]
curr=self.conn.cursor()
curr.executemany(self.sql,data)
self.conn.commit()
#_srcandconn_store...
buff=Buffer(conn_store,"insertintosybase_uservalues(%s,%s)")
sql_query="selecta.id,a.namefromuser_infoawherea.id=%s"
curr_src=conn_src.cursor()
curr_src.execute(sql_query,'0001')
forrowincurr_src:
buff.append(row)
buff.flush()
❾ python中向mysql資料庫插入變數
從錯誤提示來看是 str 和 object 無法拼接,這是表象錯誤,實際上,你根本用不著拼接 str 和 object ,你這句 insert 看起來是有問題的,寫的很亂。首先你要理清 censor 這個表有幾個欄位,是什麼類型,然後再在這里構造 insert ,這里的雙引號是給 python 解析的,雙引號中的 values 後的各值還要加單引號,那是給 mysql 看的,要用清醒的頭腦認識到這點你才能拼接好。
改成這樣試試,注意加了很多單引號:
sql="insert censor vaules('"+data[0]+"','"+list[i]+"','開機的流程')"
❿ Python連接MSSQL
用pyodbc非常好用,安裝即可用。而且可以連接其他資料庫,像SQLServer,postgre,oracle,db2等等。