python34mysql
可能在python2.x中用習慣了mysqldb,但是在python3.x中已經不支持那個組件了。
取而代之的是:
import pymysql
所以,大家pip起來吧。另外,mysql官方出了個mysql.connector,也可以用。
我這用的例子如下:
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='test',
db='mysql')
cur = conn.cursor()
cur.execute("SELECT * FROM user")
for r in cur.fetchall():
print(r)
#cur.close()
conn.close()
Ⅱ 如何使用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("發生異常")
- 結果如下:
D:pythonpython.exeD:/pythonide/pythonprojectworkspace/python/mysql.py
ID:1名字:秦天性別:男
ID:2名字:王晶性別:女
Processfinishedwithexitcode0
Java代碼
原文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連接mysql資料庫報錯
Python連接mysql資料庫報錯
這里的意思是:資料庫連不上啊。
可能是網路問題,可能是防火牆問題,可能是3306埠沒開。你先排除這些問題吧。用一些mysql工具連接測試看,比如SQLyog 測試。
Ⅳ 掌握Python 操作 MySQL 資料庫
本文Python 操作 MySQL 資料庫需要是使用到 PyMySQL 驅動
Python 操作 MySQL 前提是要安裝好 MySQL 資料庫並能正常連接使用,安裝步驟詳見下文。
注意: 安裝過程我們需要通過開啟管理員許可權來安裝,否則會由於許可權不足導致無法安裝。
首先需要先下載 MySQL 安裝包, 官網下載地址 下載對應版本即可,或直接在網上拉取並安裝:
許可權設置:
初始化 MySQL:
啟動 MySQL:
查看 MySQL 運行狀態:
Mysql安裝成功後,默認的root用戶密碼為空,你可以使用以下命令來創建root用戶的密碼:
登陸:
創建資料庫:
查看資料庫:
PyMySQL 模塊使用 pip命令進行安裝:
假如系統不支持 pip 命令,可以使用以下方式安裝:
pymysql .connect 函數:連接上資料庫
輸出結果顯示如下:表面資料庫連接成功
使用 pymysql 的 connect() 方法連接資料庫,connect 參數解釋如下:
conn.cursor():獲取游標
如果要操作資料庫,光連接數據是不夠的,咱們必須拿到操作資料庫的游標,才能進行後續的操作,游標的主要作用是用來接收資料庫操作後的返回結果,比如讀取數據、添加數據。通過獲取到的資料庫連接實例 conn 下的 cursor() 方法來創建游標,實例如下:
輸出結果為:
cursor 返回一個游標實例對象,其中包含了很多操作數據的方法,如執行sql語句,sql 執行命令: execute() 和 executemany()
execute(query,args=None):
executemany(query,args=None):
其他游標對象如下表:
完整資料庫連接操作實例如下:
以上結果輸出為:
創建表代碼如下:
如下所示資料庫表創建成功:
插入數據實現代碼:
插入數據結果:
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
查詢數據代碼如下:
輸出結果:
DB API中定義了一些資料庫操作的錯誤及異常,下表列出了這些錯誤和異常:
本文給大家介紹 Python 如何連接 Mysql 進行數據的增刪改查操作,文章通過簡潔的代碼方式進行示例演示,給使用 Python 操作 Mysql 的工程師提供支撐。
Ⅳ 如何用python連接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 協議:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。
MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。
2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。
3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。
4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。
Ⅵ pymysql.cursors模塊在哪
1、python安裝目錄設定為d:/python34 2、pymysql安裝方法為:解壓下載的文件,在cmd中運行: python setup.py install。 檢驗安裝安裝是否成功的方法:import pymysql 。 如果不報錯 說明安裝成功。 3、mysql安裝目錄為D:/phpStudy/MySQL。
Ⅶ 誰知道Python如何對MySQL存儲過程進行調用
環境:1.MySQL5.0 或者以上支持MySQL存儲過程的版本2.安裝MySQL-python,目前支持到2.x步驟:一.資料庫准備1.建立表view sourceprint?1 CREATE TABLE `Account` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `sm_accountName` VARCHAR(100) COLLATE gbk_chinese_ci NOT NULL DEFAULT '', `sm_password` TEXT COLLATE gbk_chinese_ci NOT NULL, `sm_onlineTime` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `accountNameIndex` (`sm_accountName`) )ENGINE=InnoDB 2.建立MySQL存儲過程view sourceprint?01 CREATE PROCEDURE `proctest`(IN i_id BIGINT, IN i_onlinetime BIGINT, OUT o_accname VARCHAR(30), OUT o_accpwd VARCHAR(50)) 02 NOT DETERMINISTIC 03 CONTAINS SQL 04 SQL SECURITY DEFINER 05 COMMENT '' 06 BEGIN 07 select sm_accountName,sm_password 08 into o_accname,o_accpwd 09 from `tbl_Account` where id=i_id and sm_onlineTime=i_onlinetime limit 1; 10 END; 3.插入部分數據view sourceprint?1 INSERT INTO `Account` (`id`, `sm_accountName`, `sm_password`, `sm_onlineTime`) VALUES 2 (1, 'luoshulin', 'asdfsdf', 0), 3 (2, 'test', '1', 0), 4 (3, 'adsfasd', 'asdf', 1); 到這里資料庫相關內容就准備好了接下去開始寫python腳本二.python腳本view sourceprint?01 #!/usr/bin/env python 02 # -*- coding: utf8 -*- 03 import MySQLdb 04 import time 05 import os, sys, string 06 def CallProc(id,onlinetime): 07 '''調用MySQL存儲過程,08 輸入參數:編號,在線時間,輸出:帳號,密碼;09 使用輸出參數方式'''10 accname=''11 accpwd=''12 conn = MySQLdb.connect(host='localhost',user='root',passwd='111111',db='ceshi')13 cur =conn.cursor()14 cur.callproc('proctest',(id,onlinetime,accname,accpwd))15 cur.execute('select @_proctest_2,@_proctest_3')16 data=cur.fetchall()17 if data:18 for rec in data:19 accname=rec[0]20 accpwd=rec[1]21 cur.close()22 conn.close();23 return accname,accpwd24 def CallProct(id,onlinetime):25 '''調用MySQL存儲過程,26 輸入參數:編號,在線時間,輸出:帳號源碼天空,密碼;27 使用select返回記錄方式'''28 accname=''29 accpwd=''30 conn = MySQLdb.connect(host='localhost',user='root',passwd='111111',db='ceshi')31 cur =conn.cursor()32 cur.nextset()33 cur.execute('call ptest(%s,%s)',(id,onlinetime))34 data=cur.fetchall()35 if data:36 for rec in data:37 accname=rec[0]38 accpwd=rec[1]39 cur.close()40 conn.close();41 return accname,accpwd42 name,pwd=CallProct(1,0)43 print name,pwd三.測試將python腳本保存為 並執行可以看到結果view sourceprint?1 [root@redhat-dev python]# python pycallproc.py2 luoshulin asdfsdf測試使用的是select返回記錄的方式,對於使用輸出參數返回結果情況也是一樣的。
Ⅷ 如何使用python連接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 協議:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。
MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。
2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。
3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。
4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。
Ⅸ 怎麼用python鏈接和操作mysql資料庫
你可以訪問Python資料庫介面及API查看詳細的支持資料庫列表。不同的資料庫你需要下載不同的DB API模塊,例如你需要訪問Oracle資料庫和Mysql數據,你需要下載Oracle和MySQL資料庫模塊。
DB-API 是一個規范. 它定義了一系列必須的對象和資料庫存取方式, 以便為各種各樣的底層資料庫系統和多種多樣的資料庫介面程序提供一致的訪問介面 。
Python的DB-API,為大多數的資料庫實現了介面,使用它連接各資料庫後,就可以用相同的方式操作各資料庫。
Python DB-API使用流程:
引入 API 模塊。
獲取與資料庫的連接。
執行SQL語句和存儲過程。
關閉資料庫連接。
什麼是MySQLdb?
MySQLdb 是用於Python鏈接Mysql資料庫的介面,它實現了 Python 資料庫 API 規范 V2.0,基於 MySQL C API 上建立的。
如何安裝MySQLdb?
為了用DB-API編寫MySQL腳本,必須確保已經安裝了MySQL。復制以下代碼,並執行:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
如果執行後的輸出結果如下所示,意味著你沒有安裝 MySQLdb 模塊:
Traceback (most recent call last):
File "test.py", line 3, in <mole>
import MySQLdb
ImportError: No mole named MySQLdb
安裝MySQLdb,請訪問 http://sourceforge.net/projects/mysql-python ,(Linux平台可以訪問:https://pypi.python.org/pypi/MySQL-python)從這里可選擇適合您的平台的安裝包,分為預編譯的二進制文件和源代碼安裝包。
如果您選擇二進制文件發行版本的話,安裝過程基本安裝提示即可完成。如果從源代碼進行安裝的話,則需要切換到MySQLdb發行版本的頂級目錄,並鍵入下列命令:
$ gunzip MySQL-python-1.2.2.tar.gz
$ tar -xvf MySQL-python-1.2.2.tar
$ cd MySQL-python-1.2.2
$ python setup.py build
$ python setup.py install
注意:請確保您有root許可權來安裝上述模塊。
資料庫連接
連接資料庫前,請先確認以下事項:
您已經創建了資料庫 TESTDB.
在TESTDB資料庫中您已經創建了表 EMPLOYEE
EMPLOYEE表欄位為 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
連接資料庫TESTDB使用的用戶名為 "testuser" ,密碼為 "test123",你可以可以自己設定或者直接使用root用戶名及其密碼,Mysql資料庫用戶授權請使用Grant命令。
在你的機子上已經安裝了 Python MySQLdb 模塊。
如果您對sql語句不熟悉,可以訪問我們的 SQL基礎教程
實例:
以下實例鏈接Mysql的TESTDB資料庫:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打開資料庫連接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# 使用execute方法執行SQL語句
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法獲取一條資料庫。
data = cursor.fetchone()
print "Database version : %s " % data
# 關閉資料庫連接
db.close()
執行以上腳本輸出結果如下:
Database version : 5.0.45
創建資料庫表
如果資料庫連接存在我們可以使用execute()方法來為資料庫創建表,如下所示創建表EMPLOYEE:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打開資料庫連接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# 如果數據表已經存在使用 execute() 方法刪除表。
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 創建數據表SQL語句
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
# 關閉資料庫連接
db.close()
資料庫插入操作
以下實例使用執行 SQL INSERT 語句向表 EMPLOYEE 插入記錄:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打開資料庫連接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# SQL 插入語句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
# 執行sql語句
cursor.execute(sql)
# 提交到資料庫執行
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# 關閉資料庫連接
db.close()
以上例子也可以寫成如下形式:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打開資料庫連接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# SQL 插入語句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# 執行sql語句
cursor.execute(sql)
# 提交到資料庫執行
db.commit()
except:
# 發生錯誤時回滾
db.rollback()
# 關閉資料庫連接
db.close()
實例:
以下代碼使用變數向SQL語句中傳遞參數:
..................................
user_id = "test123"
password = "password"
con.execute('insert into Login values("%s", "%s")' % \
(user_id, password))
..................................
資料庫查詢操作
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
fetchone(): 該方法獲取下一個查詢結果集。結果集是一個對象
fetchall():接收全部的返回結果行.
rowcount: 這是一個只讀屬性,並返回執行execute()方法後影響的行數。
實例:
查詢EMPLOYEE表中salary(工資)欄位大於1000的所有數據:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打開資料庫連接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# SQL 查詢語句
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > '%d'" % (1000)
try:
# 執行SQL語句
cursor.execute(sql)
# 獲取所有記錄列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 列印結果
print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
(fname, lname, age, sex, income )
except:
print "Error: unable to fecth data"
# 關閉資料庫連接
db.close()
以上腳本執行結果如下:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
資料庫更新操作
更新操作用於更新數據表的的數據,以下實例將 TESTDB表中的 SEX 欄位全部修改為 'M',AGE 欄位遞增1:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打開資料庫連接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# SQL 更新語句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1
WHERE SEX = '%c'" % ('M')
try:
# 執行SQL語句
cursor.execute(sql)
# 提交到資料庫執行
db.commit()
except:
# 發生錯誤時回滾
db.rollback()
# 關閉資料庫連接
db.close()
刪除操作
刪除操作用於刪除數據表中的數據,以下實例演示了刪除數據表 EMPLOYEE 中 AGE 大於 20 的所有數據:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打開資料庫連接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
# SQL 刪除語句
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
# 執行SQL語句
cursor.execute(sql)
# 提交修改
db.commit()
except:
# 發生錯誤時回滾
db.rollback()
# 關閉連接
db.close()
執行事務
事務機制可以確保數據一致性。
事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
持久性(rability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
Python DB API 2.0 的事務提供了兩個方法 commit 或 rollback。
Ⅹ python上怎麼安裝mysql
1、安裝mysql
首先到mysql官網下載文件:mysql-installer-community.msi 安裝過程同一般exe文件,不再敘述,直接下一步即可;
2、安裝MySQL-python-1.2.3
直接根據web.py給出 的鏈接,下載文件MySQL-python.tar.gz 解壓到任意目錄
然後在cmd命令行行下進行安裝;
C:\...> python setup.py install
C:\...> python setup.py bdist_wininst