導航:首頁 > 編程語言 > pythonmysql使用

pythonmysql使用

發布時間:2023-05-12 12:18:31

python之MySQL操作

MySQL 是目前使用最廣泛的資料庫之一,它有著良好的性能,能夠跨平台,支持分布式,能夠承受高並發。下載地址: MySQL :: Download MySQL Community Server 安裝參考: 圖解MySQL5.7.20免安裝版配置方法-網路經驗 (.com)

Python 大致有如下 5 種方式操作 MySQL。

先使用如下建表語句創建一張簡單的資料庫表。

2.1 mysqlclient

執行 pip install mysqlclient 進行安裝,看一下具體操作。

新增

查詢

cursor 查看方法

修改

刪除

2.2 PyMySQL

執行 pip install pymysql 進行安裝,使用方式與 mysqlclient 基本類似。

2.3 peewee

執行 pip install peewee 進行安裝,看一下具體操作。

定義映射類

新增

查詢

修改

刪除

2.4 SQLAlchemy

執行 pip install sqlalchemy 進行安裝,看一下具體操作。

定義映射類

新增

查詢

修改

刪除

Python學習日記

Ⅱ 怎麼用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 資料庫可以使用哪些第三方實現

MySQLdbMySQLdb是 Python 連接 MySQL 最流行的一個驅動,很多框架都也是基於此庫進行開發,遺憾的是它只支持 Python2.x,它是基於C開發的庫,和Windows 平台的兼容性不友好,現在基本不推薦使用,取代的是它的衍生版本。mysqlclient由於 MySQLdb 年久失修,後來出現了它的 Fork 版本 mysqlclient,完全兼容 MySQLdb,同時支持 Python3.x,是 Django ORM的依賴工具,如果你想使用原生 SQL 來操作資料庫,那麼推薦此驅動。PyMySQLPyMySQL是純 Python 實現的驅動,速度上比不上 MySQLdb,最大的特點可能就是它的安裝方式沒那麼繁瑣,同時也兼容 MySQLdb。SQLAlchemySQLAlchemy是一種既支持原生 SQL,又支持 ORM 的工具,它非常接近 Java 中的 Hibernate 框架。有關Python訪問MySQL資料庫全部內容的學習,我都是通過黑馬程序員的視頻學的。看完之後立馬決定去培訓了。你可以搜搜,都是免費資源。黑馬視頻庫裡面搜索一下,找不到的話官網彈出來的對話框問一下就不會迷路了。

Ⅳ 掌握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資料庫

1、和資料庫建立連接
2、執行sql語句,接收返回值
3、關閉資料庫連接

1、MySQL資料庫要用MySQLdb模塊,但Python用來鏈接MySQL的第三方庫MySQLdb不支持Python3.x
特別說明:我在我的電腦上實驗時,我的python是2.7.2版本,安裝對應版本的MySQLdb之後直接可以運行,並與資料庫連接成功,所以如果大家也像我一樣順利的話,下面的就不需要看了,直接跳過,看第2點如何執行sql語句即可!如果安裝之後出現異常,可以參考一下下面的解決辦法。

連接的關鍵是安裝MySQLdb模塊要下載與Python相對應的版本:
下載好後安裝,它會自動檢測到計算機Python的安裝路徑,並自動填寫模塊解壓路徑(我的是:D:\ProgramFiles\ActivePython 2.6.6.17\Lib\site-packages\)。
但解壓完成後並不能使用,還要修改MySQLdb模塊下的一些文件:
①.在MySQLdb目錄下(我的是:D:\ProgramFiles\ActivePython 2.6.6.17\Lib\site-packages\MySQLdb)找到__init__.py:
注釋第34、35行的from setsimport ImmutableSet、class DBAPISet(ImmutableSet):,在後面添加class DBAPISet(frozenset):

# from sets import ImmutableSet
# class DBAPISet(ImmutableSet):
class DBAPISet(frozenset):

②.打開converters.py:
注釋第37行的from sets import BaseSet, Set,將第45行的return Set([ i for i in s.split(',') ifi ])中的Set改為set;同樣將第129行的Set: Set2Str,中的Set改為set(不要修改Set2Str),到這里就修改完畢了
2.建立資料庫連接
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db="mytable")

比較常用的參數包括
host: 連接的資料庫伺服器主機名,默認為本地主機(localhost)。
user:資料庫登陸名.默認是當前用戶.
passwd:資料庫登陸的秘密.默認為空.
db:要使用的資料庫名.沒有默認值.
port:MySQL服務使用的TCP埠.默認是3306.
conn連接有兩個重要的方法commit【提交新增和修改】,rollback【撤銷新增或修改】
3、執行資料庫操作
n=cursor.execute(sql,param)
我們要使用連接對象獲得一個cursor對象,接下來,我們會使用cursor提供的方法來進行工作.
這些方法包括兩大類:1.執行命令,2.接收返回值
cursor用來執行命令的方法:
callproc(self, procname, args):用來執行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數
execute(self, query, args):執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數
executemany(self, query, args):執行單挑sql語句,但是重復執行參數列表裡的參數,返回值為受影響的行數
nextset(self):移動到下一個結果集
cursor用來接收返回值的方法:
fetchall(self):接收全部的返回結果行.
fetchmany(self, size=None):接收size條返回結果行.如果size的值大於返回的結果行的數量,則會返回cursor.arraysize條數據.
fetchone(self):返回一條結果行.
scroll(self, value, mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果mode='absolute',則表示從結果集的第一行移動value條.
下面的代碼是一個完整的例子.
#使用sql語句,這里要接收的參數都用%s佔位符.要注意的是,無論你要插入的數據是什麼類型,佔位符永遠都要用%s
sql="insert into cdinfo values(%s,%s,%s,%s,%s)"
#param應該為tuple或者list
param=(title,singer,imgurl,url,alpha)
#執行,如果成功,n的值為1
n=cursor.execute(sql,param)
#再來執行一個查詢的操作
cursor.execute("select * from cdinfo")
#我們使用了fetchall這個方法.這樣,cds里保存的將會是查詢返回的全部結果.每條結果都是一個tuple類型的數據,這些tuple組成了一個tuple
cds=cursor.fetchall()
#因為是tuple,所以可以這樣使用結果集
print cds[0][3]
#或者直接顯示出來,看看結果集的真實樣子
print cds
#如果需要批量的插入數據,就這樣做
sql="insert into cdinfo values(0,%s,%s,%s,%s,%s)"
#每個值的集合為一個tuple,整個參數集組成一個tuple,或者list
param=((title,singer,imgurl,url,alpha),(title2,singer2,imgurl2,url2,alpha2))
#使用executemany方法來批量的插入數據.這真是一個很酷的方法!
n=cursor.executemany(sql,param)
需要注意的是(或者說是我感到奇怪的是),在執行完插入或刪除或修改操作後,需要調用一下conn.commit()方法進行提交.這樣,數據才會真正保存在資料庫中.我不清楚是否是我的mysql設置問題,總之,今天我在一開始使用的時候,如果不用commit,那數據就不會保留在資料庫中,但是,數據確實在資料庫呆過.因為自動編號進行了累積,而且返回的受影響的行數並不為0.
4、關閉資料庫連接
需要分別的關閉指針對象和連接對象.他們有名字相同的方法
cursor.close()
conn.close()
5、
5 編碼(防止亂碼)
需要注意的點:
1 Python文件設置編碼 utf-8 (文件前面加上 #encoding=utf-8)
2 MySQL資料庫charset=utf-8
3 Python連接MySQL是加上參數 charset=utf8
4 設置Python的默認編碼為 utf-8 (sys.setdefaultencoding(utf-8)
#encoding=utf-8
import sys
import MySQLdb

reload(sys)
sys.setdefaultencoding('utf-8')

db=MySQLdb.connect(user='root',charset='utf8')
註:MySQL的配置文件設置也必須配置成utf8

6.模塊功能演示
#!/usr/bin/python
import MySQLdb
Con= MySQLdb.connect(host='localhost',user='root',passwd='root',db='abc')
cursor =con.cursor()
sql ="select * from myt"
cursor.execute(sql)
row=cursor.fetchone()
print row
cursor.close()
con.close()

執行以下SQL語句獲取返回值:
//獲取連接的游標
cursor=conn.cursor()
//查詢
sql = "select * from 【table】"
//新增
sql = "insert into 【table】(欄位,欄位) values(值,值)"
//修改
sql = "update 【table】 set 欄位 =『值』where 條件 "
//刪除
sql = "delete from 【table】where 條件"
cursor.execute(sql)
返回值
cur.execute('select * from tables')
其返回值為SQL語句得到的行數,如:2L,表示2行。
然後,可以從該對象的fetchone或fetchall方法得到行信息。
獲取行信息
指針對象的fetchone()方法,是每次得到一行的tuple返回值:
引用
>>> row=cur.fetchone()
>>> print row
('user1', '', 1000L, 1000L, '/home/FTP/user1','')
指針對象的fetchall()方法,可取出指針結果集中的所有行,返回的結果集一個元組(tuples):
引用
>>> cur.scroll(0,'absolute')
>>> row=cur.fetchall()
>>> print row
(('user1', '', 1000L, 1000L, '/home/FTP/user1',''), ('user2', '', 1000L, 1000L,'/home/FTP/user2', None))
移動指針
當使用fetchone()方法是,指針是會發生移動的。所以,若不重置指針,那麼使用fetchall的信息將只會包含指針後面的行內容。
手動移動指針使用:
cur.scroll(int,parm)
含義為:
引用
int:移動的行數,整數;在相對模式下,正數向下移動,負值表示向上移動。
parm:移動的模式,默認是relative,相對模式;可接受absoulte,絕對模式。
修改數據
修改數據,包括插入、更新、刪除。它們都是使用指針對象的execute()方法執行:
cur.execute("insert into table (row1, row2) values ('111', '222')")
cur.execute("update table set row1 = 'test' where row2 = 'row2' ")
cur.execute("delete from table where row1 = 'row1' ")
因單引號「'」用於SQL語句中的標識,所以,python中的字元串需使用雙引號括住。
此外,也可以使用python的「格式化字元串」寫法,簡化命令,例如:
cur.execute("update table set row1 = '%s' where row2 = '%s' "%('value1','value2'))
※請注意,'%s'的單引號是SQL語句的間隔符,'value1'的單引號是python的字元串間隔符,其含義是不同的。是否需要間隔符,以及使用雙引號還是單引號作為間隔,需根據其含義決定。例如,還有:
cur.execute("update FTPUSERS set passwd=%s where userid='%s' "%("md5('123')",'user2'))
這里,paswd=%s是因SQL的md5()函數是不需要單引號間隔的;"md5('123')"是python的字元串中含有單引號,所以用雙引號括住。
提交修改
一般情況下,MySQLdb模塊會自動提交修改。但我們在更新數據後,手動運行一次:
conn.commit()
關閉資料庫連接
需要分別的關閉指針對象和連接對象.他們有名字相同的方法
cursor.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代碼

Ⅶ python連接MySQL資料庫問題 cursor( ) 、execute()和fetc

MySQLdb.connect是python 連接MySQL資料庫的方法,在Python中 import MySQLdb即可使用,至於connect中的參數很簡單:x0dx0ahost:MySQL伺服器名x0dx0auser:資料庫使用者x0dx0apassword:用戶登錄密碼x0dx0adb:操作的資料庫名x0dx0acharset:使用的字元集(一般是gb2312)x0dx0acursor = db.cursor() 其實就是用來獲得python執行Mysql命令的方法,也就是x0dx0a我們所說的操作游標x0dx0a下面cursor.execute則是真正執行MySQL語句,即查詢TABLE_PARAMS表的數據。x0dx0a至於fetchall()則是接收全部的返回結果行 row就是在python中定義的一個變數,用來接收返回結果行的每行數據。同樣後面的r也是一個變數,用來接收row中的每個字元,如果寫成C的形式就更好理解了x0dx0afor(string row = '' row<= cursor.fetchall(): row++)x0dx0a for(char r = '' r<= row; r++)x0dx0aprintf("%c", r);x0dx0a大致就是這么個意思!

Ⅷ Python 操作 MySQL 的5種方式

1、MySQLdb

# 前置條件

sudo apt-get install python-dev libmysqlclient-dev # Ubuntu

sudo yum install python-devel mysql-devel # Red Hat / CentOS

# 安裝

pip install MySQL-python

Windows 直接通過下載 exe 文件安裝

#!/usr/bin/python

import MySQLdb

db = MySQLdb.connect(

host = "localhost", # 主機名

user = "root", # 用戶名

passwd = "pythontab.com", # 密碼

db = "testdb") # 資料庫名稱

# 查詢芹舉前,必須先獲取游標

cur = db.cursor()

# 執行的都是原生差首亮SQL語句

cur.execute("SELECT * FROM mytable")

for row in cur.fetchall():

print(row[0])

db.close()

2、mysqlclient

# Windows安虛寬裝

pip install some-package.whl

# linux 前置條件

sudo apt-get install python3-dev # debian / Ubuntu

sudo yum install python3-devel # Red Hat / CentOS

brew install mysql-connector-c # macOS (Homebrew)

pip install mysqlclient

3、PyMySQL

pip install PyMySQL

# 為了兼容mysqldb,只需要加入

pymysql.install_as_MySQLdb()

import pymysql

conn = pymysql.connect(host = 飗.0.0.1', user = 'root', passwd = "pythontab.com", db = 'testdb')

cur = conn.cursor()

cur.execute("SELECT Host,User FROM user")

for r in cur:

print(r)

cur.close()

conn.close()

4、peewee

pip install peewee

import peewee

from peewee import *

db = MySQLDatabase('testdb', user = 'root', passwd = 'pythontab.com')

class Book(peewee.Model):

author = peewee.CharField()

title = peewee.TextField()

class Meta:

database = db

Book.create_table()

book = Book(author = "pythontab", title = 'pythontab is good website')

book.save()

for book in Book.filter(author = "pythontab"):

print(book.title)

5、SQLAlchemy

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

from sqlalchemy_declarative import Address, Base, Person

class Address(Base):

__tablename__ = 'address'

id = Column(Integer, primary_key = True)

street_name = Column(String(250))

engine = create_engine('sqlite:///sqlalchemy_example.db')

Base.metadata.bind = engine

DBSession = sessionmaker(bind = engine)

session = DBSession()

# Insert a Person in the person table

new_person = Person(name = 'new person')

session.add(new_person)

session.commit()

Ⅸ 如何使用Python3.4連接MySQL

1、首先下載mysql 資料庫,我安裝的是mysql5.1版本,直接安裝就行,但是如果以後你想在資料庫里顯示中文的話,要把字元集設置為gb2312
2、配置數據源odbc。 mysql-connector-odbc-3.51.20-win32.exe(這是mysql數據源dobc安裝程序),配置odbc過程可以參考 http://jingyan..com/article/8065f87f38b31423312498e4.html
3、安裝mysql管理工具,Navicat for MySQL,打開navicat 後要連接資料庫,具體做法是:在navicat中新建連接,將常規設置填好,如果是訪問本地資料庫,主機名或iP地址可填寫:localhost 或127.0.0.1 有時候只有填其中一個好使另一個則不好使,(筆者這里沒仔細研究)注意!Navicat for MySQL資料庫連接之前要開啟mysql資料庫(服務)...。
4、在navicat中新建的連接中就可以連接mysql資料庫了
5、現在可以導入外部資料庫表,或者自己建立表了,這里談一下筆者在導入外部表時遇到的問題,首先是字元編碼的問題,在mysql安裝的過程中雖然字元編碼設置為gb2312但是在navicat中帶有中文的數據表表(比如excel表)還是無法導入進navicat的資料庫表中,那是因為雖然在mysql裡面設置了字元編碼但是在navicat中沒有設置字元編碼為gb2312,需要在navicat中右鍵資料庫,選擇資料庫屬性把裡面的字元編碼設置成為gb2312方可!
6、至於導入表可以右鍵資料庫中的表選擇導入向導,很容易操作,導出的問題此處不介紹。
7、到現在為止數據的搭建已經結束。

這是我自己總結過的 很好用的 希望採納

Ⅹ Python3 MySQL executemany的使用

題主你好,

從你的代碼來說, 你的問題出在對executemany(sql, data)這個方法的邏輯沒弄明白.

咱們對比一下execute(sql)和executemany(sql, data), 這里假設sql執行的是插入操作:

前者是執行單條操作,要插入的數據是寫死在sql這個字元串中的;

後者是批量執行插入操作.關鍵的地方在於sql參數中留出格式化字元, 而數據是從data中取,這么說不好理解,看例子吧:

sql改為:

sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%s, %s, %s)"

注意和你的對比一下:

sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%s, %s, %s)" % (aa,bb,cc)

-----

關鍵是data參數,有兩種寫法,一種是序列內嵌, 一種是字典:

序列內嵌(外層必須是列表, 內層元素是列表或元組)

data=[[1,2,3],[4,5,6],[7,8,9]]

data=[(1,2,3),(4,5,6),(7,8,9)]

字典:

使用字典時,sql也要相應的改一下:

sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%(nu1)s, %(nu2)s, %(nu3)s)"

data參數外層還是一個列表, 內層元素是一個個的字典,即一個字典表示一條將要被插入的數據:

data = [ { 'nu1':1, 'nu2':2, 'nu3':3 }, { 'nu1':1, 'nu2':2, 'nu3':3 } ]

-----

再說下最終的邏輯:

序列內嵌法:

1.可以使用for循環先得到一個外層是列表,內層元素是列表或元組的這的一個列表:

ll= []
for i in itertools.permutations(range(1,8),3):
ll.append(i)

2.然後再構建sql語句:

sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%s, %s, %s)"

3.調用executemany():

cursor.executemany(sql,ll)

4.最後調用commit(),提交給資料庫執行:

yydd.commit()

-----

字典法的邏輯:

1.使用for循環構建一個元素是字典的列表:

ll= []
for i in itertools.permutations(range(1,8),3):
ll.append({'nu1':i[0], 'nu2':i[1], 'nu3':i[2]})

2.構建sql語句:

sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%(nu1)s, %(nu2)s, %(nu3)s)"

3,4步同序列內嵌法中的描述.

=====

希望可以幫到題主, 歡迎追問

閱讀全文

與pythonmysql使用相關的資料

熱點內容
鴻蒙加密等級 瀏覽:802
cocos2dluapdf 瀏覽:491
假的加密鎖靠譜嗎 瀏覽:176
經營聖手伺服器怎麼調 瀏覽:749
arduino手機編程 瀏覽:481
西醫pdf下載 瀏覽:29
後浪電影學院pdf 瀏覽:813
程序員怎麼做到不被人嫉妒 瀏覽:669
cmd新建文件夾md命令 瀏覽:570
php數組中的數值排序 瀏覽:832
安卓手機怎麼避免小孩內購 瀏覽:171
聯想伺服器出現黃色嘆號怎麼辦 瀏覽:991
約翰編譯器製作教程 瀏覽:130
大地pdf 瀏覽:109
pdfplus 瀏覽:577
匯編O命令 瀏覽:970
plt轉pdf 瀏覽:366
魔獸60宏命令大全 瀏覽:479
php志願者網站源碼 瀏覽:875
貿易pdf 瀏覽:498