pythonmysqldbpip
A. python第三方庫不安裝可以嗎
Python 是一門優雅的語言,簡潔的語法,強大的功能。當然豐富的第三方庫,更能加速開發。那麼問題來了,如何安裝這些第三方庫(包)呢?
安裝第三方庫的方式其實不多。下面就介紹一些技巧。
源碼安裝
很多第三方庫都是開源的,幾乎都可以在github 或者 pypi上找到源碼。找到源碼格式大概都是 zip 、 tar.zip、 tar.bz2格式的壓縮包。解壓這些包,進入解壓好的文件夾,通常會看見一個 setup.py 的文件。打開命令行,進入該文件夾。運行
python setup.py install
這個命令,就能把這個第三庫安裝到系統里,也就是你的 Python 路徑,windows大概是在 C:\Python2.7\Lib\site-packages。
linux會在 /usr/local/lib/python2.7/dist-packages。
Mac 應該在 /Library/Python/2.7/site-packages。如果是在 virtulenv環境下安裝,這個包就被安裝在所建立的虛擬環境下的 site-packages/目錄下。想要卸載這些庫也很簡單,進入 site-packages,直接刪掉庫文件就 OK 啦。當然,這些安裝可能有一點麻煩,需要下載,解壓,再運行安裝,卸載也不是很方便。有沒有一種工具,可以幫外面管理這些庫呢?
包管理器 (pip 和 easy_install)
現在很多編程語言,都帶有包管理器,例如 Ruby 的 gem,nodejs的npm。Python當然也不例外,擁有大名鼎鼎的 pip和 easy_install。
前面說到的pypi就是一些 python第三庫所在的源,使用 pip 或者 easy_install 安裝模塊,會搜索這個源,然後自動下載安裝。比如我們需要安裝 flask 框架具體命令如下:
pip install flask
或者
easy_install flask
簡單吧,一個簡單的命令就搞定。卸載也很方便,例如我們需要卸載flask
pip uninstall flask
查看所安裝的包,包括系統自帶的和手動安裝的
pip list
還可以搜索包
pip search flask
還可以重定向輸出項目使用的庫。
pip freeze > requirements.txt
這樣就會把該環境下的第三方庫重定向到 requirements.txt文件內,如果給別人安裝項目的依賴,只需要運行:
pip install -r requirements.txt
很方便吧。當然,有時候,我們的網路並不是那麼順暢,pip是在線安裝的,可不可以離線呢?當然可以啦,pip install 的第一步,就是在 pypi 上尋找包,然後下載到本地。如果網路不好,可以先建一個本地的倉庫,把常用的包離線下載。比如可以下載 flask 的源碼
pip intall flask-master.zip
同樣也可以安裝。
最新版本的pip也支持git安裝,只需要使用其git地址就行
pip install git+https://github.com/kennethreitz/requests.git
不過這種安裝方式相當的慢。它的原來就是先clone到本地的臨時目錄,然後再安裝zip包。
虛擬環境相關安裝
當然,上面介紹的,其實也是很普通很常見的方式,也算不上什麼技巧。下面介紹的,則是一些需要了解原理和解決非常規問題的技巧。
使用Python,我們會喜歡用 virtualenv建立虛擬環境,例如建立一個 venv的虛擬環境。我們只需要 source進去就可以使用pip安裝了。可是有時候,即使在虛擬環境下,使用了sudo的前綴(windows忽略),那麼安裝的庫不是在虛擬環境,而是被安裝到系統下的site-package 目錄下了。
windows的用戶可能會很開心,不需要注意這個問題。當然 windows 也同樣有著自己的問題。在 windows上安裝python,一般是編譯好的二進制包exe可執行文件。通常有 32位和64位的python。對於第三方庫,本來32和64不會有太大的差別。但是對於一些C寫的python庫,如mysqldb,PIL, pillow,會發現使用 pip或者 easy_install 的方式會報錯:
Fixing python error: Unable to find vcvarsall.bat
原因大概是 windows上缺少一些 C編譯器東東。源碼需要編譯一下才能安裝,此時 windows就很苦逼了。當然,有一些好心人,幫您把常用的一些庫編譯成 exe 可執行文件,放到了這個站點。你只需要尋找對於版本的,下載一鍵安裝。
可是,還有一個問題,下載 exe 文件,運行安裝,這個庫是被安裝到了系統的 site-package 目錄下,如果我在windows 建立了venv虛擬環境,這樣安裝不是歇菜了么?
別擔心,這個文章的真正技巧,就是為了解決這個問題的。我們來安裝64位的 mysqldb。先下載 MySQL‑python‑1.2.5.win‑amd64‑py2.7.exe 在 windows 上,用命令行進入虛擬環境 venv。然後運行
easy_install MySQL‑python‑1.2.5.win‑amd64‑py2.7.exe
完美解決,在 venv 虛擬環境,將mysqldb 庫安裝到了venv下。
有了上面三個方式,幾乎涵蓋 python 所有平台的第三方庫安裝。不過話說回來,盡管 Python 是跨平台,開發環境,還是盡量使用 Linux或者MacOS,這兩個系統有更好的工具以及省去很多莫名其妙的問題。
B. 如何用python3連接mysql資料庫
python3使用PyMysql連接mysql資料庫
python語言的3 x完全不向前兼容,導致我們在python2 x中可以正常使用的庫,到了python3就用不了了 比如說mysqldb目前MySQLdb並不支持python3
python語言的3.x完全不向前兼容,導致我們在python2.x中可以正常使用的庫,到了python3就用不了了.比如說mysqldb
目前MySQLdb並不支持python3.x , Python3.x連接MySQL的方案有:oursql, PyMySQL, myconnpy 等
下面來說下python3如何安裝和使用pymysql,另外兩個方案我會在以後再講。
1.pymysql安裝
pymysql就是作為python3環境下mysqldb的替代物,進入命令行,使用pip安裝pymysql
1
pip install pymysql3
2.pymysql使用
如果想使用mysqldb的方式,那麼直接在py文件的開頭加入如下兩行代碼即可。
1
2
3
4
#引入pymysql
import pymysql
#當成是mysqldb一樣使用,當然也可以不寫這句,那就按照pymysql的方式
pymysql.install_as_MySQLdb()
C. 如何用python的pip安裝mysqldb
如何用python的pip安裝mysqldb
python2.7和python3.4你可以看成是兩個軟體,你在一個里裝了,另一個里當然不能用,你需要在python3.4里也安裝mysqldb才可以,你可以通過pip install mysql-python,或者python3 setup.py install 來安裝。
到官方下載MySQL for Python
然後解壓,打開README:
裡面有安裝過程:
$ tar xfz MySQL-python-1.2.1.tar.gz
$ cd MySQL-python-1.2.1
$ # edit site.cfg if necessary
$ python setup.py build
$ sudo python setup.py install # or su first
D. 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()
E. 如何在virtualenv虛擬環境中安裝mysql-python
接觸過virtualenv後,想在這個虛擬環境中安裝獨立的開發環境。在安裝MySQLdb時遇到錯誤
pc 09:09:30
File "/home/pc/work/VENV/py3/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 50, in run_setup
lambda: execfile(
File "/home/pc/work/VENV/py3/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 100, in run
return func()
File "/home/pc/work/VENV/py3/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 52, in <lambda>
{'__file__':setup_script, '__name__':'__main__'}
File "setup.py", line 17, in <mole>
File "/tmp/easy_install-FtC77Z/MySQL-python-1.2.5/setup_posix.py", line 43, in get_config
File "/tmp/easy_install-FtC77Z/MySQL-python-1.2.5/setup_posix.py", line 25, in mysql_config
EnvironmentError: mysql_config not found
在國內的網上找了好長時間也沒有找到辦法,大多數是講如何安裝mysql-python的。先說一下解決過程吧
我是在ubuntu14上安裝有virtualenv,在全局環境中安裝了mysql-server,安裝命令
sudo apt-get install mysql-server
後續過程都是在虛擬環境中進行的。我的是py3
開始找到要想使用mysql需要安裝libmysqlclient-dev
安裝過後在安裝mysql-python還是出錯
(py3)pc@pc-virtual-machine:~/work/VENV/py3/bin$ pip install mysql-python
Downloading/unpacking mysql-python
Downloading MySQL-python-1.2.5.zip (108kB): 108kB downloaded
Running setup.py (path:/home/pc/work/VENV/py3/build/mysql-python/setup.py) egg_info for package mysql-python
Installing collected packages: mysql-python
Running setup.py install for mysql-python
building '_mysql' extension
i686-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-i686-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -DTAOCRYPT_DISABLE_X86ASM -g -DNDEBUG
_mysql.c:29:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'i686-linux-gnu-gcc' failed with exit status 1
Complete output from command /home/pc/work/VENV/py3/bin/python -c "import setuptools, tokenize;__file__='/home/pc/work/VENV/py3/build/mysql-python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-V4wHKY-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/pc/work/VENV/py3/include/site/python2.7:
running install
running build
running build_py
creating build
creating build/lib.linux-i686-2.7
ing _mysql_exceptions.py -> build/lib.linux-i686-2.7
creating build/lib.linux-i686-2.7/MySQLdb
ing MySQLdb/__init__.py -> build/lib.linux-i686-2.7/MySQLdb
ing MySQLdb/converters.py -> build/lib.linux-i686-2.7/MySQLdb
ing MySQLdb/connections.py -> build/lib.linux-i686-2.7/MySQLdb
ing MySQLdb/cursors.py -> build/lib.linux-i686-2.7/MySQLdb
ing MySQLdb/release.py -> build/lib.linux-i686-2.7/MySQLdb
ing MySQLdb/times.py -> build/lib.linux-i686-2.7/MySQLdb
creating build/lib.linux-i686-2.7/MySQLdb/constants
ing MySQLdb/constants/__init__.py -> build/lib.linux-i686-2.7/MySQLdb/constants
ing MySQLdb/constants/CR.py -> build/lib.linux-i686-2.7/MySQLdb/constants
ing MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-i686-2.7/MySQLdb/constants
ing MySQLdb/constants/ER.py -> build/lib.linux-i686-2.7/MySQLdb/constants
ing MySQLdb/constants/FLAG.py -> build/lib.linux-i686-2.7/MySQLdb/constants
ing MySQLdb/constants/REFRESH.py -> build/lib.linux-i686-2.7/MySQLdb/constants
ing MySQLdb/constants/CLIENT.py -> build/lib.linux-i686-2.7/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.linux-i686-2.7
i686-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-i686-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -DTAOCRYPT_DISABLE_X86ASM -g -DNDEBUG
_mysql.c:29:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'i686-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Cleaning up...
Command /home/pc/work/VENV/py3/bin/python -c "import setuptools, tokenize;__file__='/home/pc/work/VENV/py3/build/mysql-python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-V4wHKY-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/pc/work/VENV/py3/include/site/python2.7 failed with error code 1 in /home/pc/work/VENV/py3/build/mysql-python
Storing debug log for failure in /home/pc/.pip/pip.log
看到如果沒有安裝python-dev,需要安裝這個就開始安裝
sudo apt-get install python-dev
此時在安裝mysql-python就可以了,所以安裝步驟是
1 安裝python-dev
sudo apt-get install python-dev
2 安裝 libmysqlclient-dev
sudo apt-get install libmysqlclient-dev
3 安裝mysql-python
pip install mysql-python
最後進行驗證
(py3)pc@pc-virtual-machine:~/work/VENV/py3/bin$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2] on linux2
Type "help", "right", "credits" or "license" for more information.
>>> import MySQLdb
>>>
如果導入沒有問題就說明導入成功了。
F. 怎麼做才能使mysql和python連接起來
什麼是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用於連接 MySQL 伺服器的一個庫,Python2中則使用mysqldb。
PyMySQL 遵循 Python 資料庫 API v2.0 規范,並包含了 pure-Python MySQL 客戶端庫。
PyMySQL 安裝
在使用 PyMySQL 之前,我們需要確保 PyMySQL 已安裝。
PyMySQL 下載地址:https://github.com/PyMySQL/PyMySQL。
如果還未安裝,我們可以使用以下命令安裝最新版的 PyMySQL:
$ pip3 install PyMySQL
如果你的系統不支持 pip 命令,可以使用以下方式安裝:
1、使用 git 命令下載安裝包安裝(你也可以手動下載):
$ git clone https://github.com/PyMySQL/PyMySQL$ cd PyMySQL/$ python3 setup.py install
2、如果需要制定版本號,可以使用 curl 命令來安裝:
$ # X.X 為 PyMySQL 的版本號$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz$ cd PyMySQL*$ python3 setup.py install
$ # 現在你可以刪除 PyMySQL* 目錄
注意:請確保您有root許可權來安裝上述模塊。
安裝的過程中可能會出現"ImportError: No mole named setuptools"的錯誤提示,意思是你沒有安裝setuptools,你可以訪問https://pypi.python.org/pypi/setuptools找到各個系統的安裝方法。
Linux 系統安裝實例:
$ wget https://bootstrap.pypa.io/ez_setup.py$ python3 ez_setup.py
資料庫連接
連接資料庫前,請先確認以下事項:
您已經創建了資料庫 TESTDB.
在TESTDB資料庫中您已經創建了表 EMPLOYEE
EMPLOYEE表欄位為 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
連接資料庫TESTDB使用的用戶名為 "testuser" ,密碼為 "test123",你可以可以自己設定或者直接使用root用戶名及其密碼,Mysql資料庫用戶授權請使用Grant命令。
在你的機子上已經安裝了 Python MySQLdb 模塊。
如果您對sql語句不熟悉,可以訪問我們的SQL基礎教程
- Database version : 5.5.20-log
- ..................................user_id = "test123"password = "password"con.execute('insert into Login values( %s, %s)' % (user_id, password))..................................
fetchone():該方法獲取下一個查詢結果集。結果集是一個對象
fetchall():接收全部的返回結果行.
rowcount:這是一個只讀屬性,並返回執行execute()方法後影響的行數。
- fname=Mac, lname=Mohan, age=20, sex=M, income=2000
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
持久性(rability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
實例:
以下實例鏈接 Mysql 的 TESTDB 資料庫:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法創建一個游標對象 cursorcursor = db.cursor()
# 使用 execute() 方法執行 SQL 查詢 cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法獲取單條數據.data = cursor.fetchone()
print ("Database version : %s " % data)
# 關閉資料庫連接db.close()
執行以上腳本輸出結果如下:
創建資料庫表
如果資料庫連接存在我們可以使用execute()方法來為資料庫創建表,如下所示創建表EMPLOYEE:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法創建一個游標對象 cursorcursor = db.cursor()
# 使用 execute() 方法執行 SQL,如果表存在則刪除cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用預處理語句創建表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 插入記錄:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.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: # 如果發生錯誤則回滾
db.rollback()
# 關閉資料庫連接db.close()
以上例子也可以寫成如下形式:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標 cursor = db.cursor()
# SQL 插入語句sql = "INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('%s', '%s', %s, '%s', %s)" % ('Mac', 'Mohan', 20, 'M', 2000)try: # 執行sql語句
cursor.execute(sql)
# 執行sql語句
db.commit()except: # 發生錯誤時回滾
db.rollback()
# 關閉資料庫連接db.close()
以下代碼使用變數向SQL語句中傳遞參數:
資料庫查詢操作
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
實例:
查詢EMPLOYEE表中salary(工資)欄位大於1000的所有數據:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標 cursor = db.cursor()
# SQL 查詢語句sql = "SELECT * FROM EMPLOYEE
WHERE INCOME > %s" % (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=%s,sex=%s,income=%s" % (fname, lname, age, sex, income ))except: print ("Error: unable to fetch data")
# 關閉資料庫連接db.close()
以上腳本執行結果如下:
資料庫更新操作
更新操作用於更新數據表的的數據,以下實例將 TESTDB 表中 SEX 為 'M' 的 AGE 欄位遞增 1:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.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 的所有數據:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標 cursor = db.cursor()
# SQL 刪除語句sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)try: # 執行SQL語句
cursor.execute(sql)
# 提交修改
db.commit()except: # 發生錯誤時回滾
db.rollback()
# 關閉連接db.close()
執行事務
事務機制可以確保數據一致性。
事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。
Python DB API 2.0 的事務提供了兩個方法 commit 或 rollback。
實例
實例(Python 3.0+)
# SQL刪除記錄語句sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)try: # 執行SQL語句
cursor.execute(sql)
# 向資料庫提交
db.commit()except: # 發生錯誤時回滾
db.rollback()
對於支持事務的資料庫, 在Python資料庫編程中,當游標建立之時,就自動開始了一個隱形的資料庫事務。
commit()方法游標的所有更新操作,rollback()方法回滾當前游標的所有操作。每一個方法都開始了一個新的事務。
錯誤處理
DB API中定義了一些資料庫操作的錯誤及異常,下表列出了這些錯誤和異常:
異常
描述
Warning 當有嚴重警告時觸發,例如插入數據是被截斷等等。必須是 StandardError 的子類。
Error 警告以外所有其他錯誤類。必須是 StandardError 的子類。
InterfaceError 當有資料庫介面模塊本身的錯誤(而不是資料庫的錯誤)發生時觸發。 必須是Error的子類。
DatabaseError 和資料庫有關的錯誤發生時觸發。 必須是Error的子類。
DataError 當有數據處理時的錯誤發生時觸發,例如:除零錯誤,數據超范圍等等。 必須是DatabaseError的子類。
OperationalError 指非用戶控制的,而是操作資料庫時發生的錯誤。例如:連接意外斷開、 資料庫名未找到、事務處理失敗、內存分配錯誤等等操作資料庫是發生的錯誤。 必須是DatabaseError的子類。
IntegrityError 完整性相關的錯誤,例如外鍵檢查失敗等。必須是DatabaseError子類。
InternalError 資料庫的內部錯誤,例如游標(cursor)失效了、事務同步失敗等等。 必須是DatabaseError子類。
ProgrammingError 程序錯誤,例如數據表(table)沒找到或已存在、SQL語句語法錯誤、 參數數量錯誤等等。必須是DatabaseError的子類。
NotSupportedError 不支持錯誤,指使用了資料庫不支持的函數或API等。例如在連接對象上 使用.rollback()函數,然而資料庫並不支持事務或者事務已關閉。 必須是DatabaseError的子類。
G. pymystem3使用
python3使用PyMysql連接mysql資料庫
python語言的3 x完全不向前兼容,導致我們在python2 x中可以正常使用的庫,到了python3就用不了了 比如說mysqldb目前MySQLdb並不支持python3python語言的3.x完全不向前兼容,導致我們在python2.x中可以正常使用的庫,到了python3就用不了了.比如說mysqldb目前MySQLdb並不支持python3.x Python3.x連接MySQL的方案有:oursql, PyMySQL, myconnpy 等下面來說下python3如何安裝和使用pymysql,另外兩個方案我會在以後再講。1.pymysql安裝pymysql就是作為python3環境下mysqldb的替代物,進入命令行,使用pip安裝pymysql
pip install pymysql3