本文目錄一覽:
- 1、在python上怎麼使用sql
- 2、如何用python3連接mysql數據庫
- 3、求教,python3怎麼通過SSH隧道連接mysql數據庫並執行SQL操作
- 4、Python連接MSSQL
- 5、sql與python區別是什麼?有什麼聯繫?
- 6、python3連接MSSQL數據庫 中文亂碼怎麼解決
在python上怎麼使用sql
第一種辦法:
# 導入SQLite驅動:
import sqlite3
# 連接到SQLite數據庫
# 數據庫文件是test.db
# 如果文件不存在,會自動在當前目錄創建:
conn = sqlite3.connect(‘test.db’)
# 創建一個Cursor:
cursor = conn.cursor()
# 執行一條SQL語句,創建user表:
cursor.execute(‘create table user (id varchar(20) primary key, name varchar(20))’)
sqlite3.Cursor object at 0x10f8aa260
# 繼續執行一條SQL語句,插入一條記錄:
cursor.execute(‘insert into user (id, name) values (\’1\’, \’Michael\’)’)
sqlite3.Cursor object at 0x10f8aa260
# 通過rowcount獲得插入的行數:
cursor.rowcount
1
# 關閉Cursor:
cursor.close()
# 提交事務:
conn.commit()
# 關閉Connection:
conn.close()
第二種辦法:
使用 SQLalchemy 等ORM 的庫。
如何用python3連接mysql數據庫
在 Python 語言環境下我們這樣連接數據庫。
In [1]: from mysql import connector
In [2]: cnx = connector.connect(host=”172.16.192.100″,port=3306,user=”appuser”,password=”xxxxxx”)
但是連接數據庫的背後發生了什麼呢?
答案
當我們通過驅動程序(mysql-connector-python,pymysql)連接 MySQL 服務端的時候,就是把連接參數傳遞給驅動程序,驅動程序再根據參數會發起到 MySQL 服務端的 TCP 連接。當 TCP 連接建立之後驅動程序與服務端之間會按特定的格式和次序交換數據包,數據包的格式和發送次序由 MySQL 協議 規定。MySQL 協議:整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。
MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。
2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。
3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。
4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。
求教,python3怎麼通過SSH隧道連接mysql數據庫並執行SQL操作
python3發布以來,獲取了廣大程序員們的差評,說不穩定,又是不兼容什麼的,不過差評歸差評,python3既然已經發布,肯定是個趨勢,但在python3.4裡面,使用原來python2.7的mysqldb已經不能連接mysql數據庫了,比較令人糾結,不過我們可以使用pymysql,來完成連接mysql的重任,步驟如下:序號描述1去github上下載pymysql的安裝包pymysql2解壓到某個盤符下3打開cmd窗口(win環境下),進入pymysql的根目錄下執行命令,pythonsetup.pyinstall4在程序里,導入pymysql5開始連接數據庫數據庫操作的API文檔連接:代碼如下:__author__=’qindongliang’#導入pymysql的包importpymysqltry:#獲取一個數據庫連接,注意如果是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(“發生異常”)結果如下:D:\python\python.exeD:/pythonide/pythonprojectworkspace/python/mysql.pyID:1名字:秦天性別:男ID:2名字:王晶性別:女Processfinishedwithexitcode0
Python連接MSSQL
用pyodbc非常好用,安裝即可用。而且可以連接其他數據庫,像SQLServer,postgre,oracle,db2等等。
sql與python區別是什麼?有什麼聯繫?
一、性質不同
1、sql:是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言。
2、python:Python由荷蘭數學和計算機科學研究學會的Guido van Rossum 於1990 年代初設計,作為一門叫做ABC語言的替代品。
二、作用不同
1、sql:用於存取數據以及查詢、更新和管理關係數據庫系統。
2、python:Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。
三、特點不同
1、sql:不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同數據庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的接口。
2、python:Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨着版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。
參考資料來源:
百度百科-Python (計算機編程語言)
百度百科-結構化查詢語言(SQL)
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()
data
except
Exception,e:
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包)等或者是普通文本文件也是類似的解決方案。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/180062.html