一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python中使用mysql數(shù)據(jù)庫詳細(xì)介紹

python中使用mysql數(shù)據(jù)庫詳細(xì)介紹

2020-05-24 10:55腳本之家 Python

這篇文章主要介紹了python中使用mysql數(shù)據(jù)庫詳細(xì)介紹,本文起講解了安裝mysql、安裝MySQL-python、mysql 的基本操作、python 操作mysql數(shù)據(jù)庫基礎(chǔ)等內(nèi)容,需要的朋友可以參考下

一、安裝mysql

如果是windows 用戶,mysql 的安裝非常簡單,直接下載安裝文件,雙擊安裝文件一步一步進(jìn)行操作即可。

Linux 下的安裝可能會更加簡單,除了下載安裝包進(jìn)行安裝外,一般的linux 倉庫中都會有mysql ,我們只需要通過一個(gè)命令就可以下載安裝:

Ubuntu\deepin

復(fù)制代碼 代碼如下:


>>sudo apt-get install mysql-server

 

>>Sudo apt-get install  mysql-client


centOS/redhat

復(fù)制代碼 代碼如下:

>>yum install mysql

 

二、安裝MySQL-python

要想使python可以操作mysql 就需要MySQL-python驅(qū)動,它是python 操作mysql必不可少的模塊。

下載地址:https://pypi.python.org/pypi/MySQL-python/

下載MySQL-python-1.2.5.zip 文件之后直接解壓。進(jìn)入MySQL-python-1.2.5目錄:

復(fù)制代碼 代碼如下:

>>python setup.py install

 

三、測試

測試非常簡單,檢查MySQLdb 模塊是否可以正常導(dǎo)入。

復(fù)制代碼 代碼如下:

fnngj@fnngj-H24X:~/pyse$ python
Python 2.7.4 (default, Sep 26 2013, 03:20:56)
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb

 

沒有報(bào)錯(cuò)提示MySQLdb模塊找不到,說明安裝OK ,下面開始使用python 操作數(shù)據(jù)庫之前,我們有必要來回顧一下mysql的基本操作:

四、mysql 的基本操作

 

復(fù)制代碼 代碼如下:

$ mysql -u root -p  (有密碼時(shí))
$ mysql -u root     (無密碼時(shí))

 

 

復(fù)制代碼 代碼如下:


mysql> show databases;  // 查看當(dāng)前所有的數(shù)據(jù)庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| csvt               |
| csvt04             |
| mysql              |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.18 sec)

 

mysql> use test;   //作用與test數(shù)據(jù)庫
Database changed
mysql> show tables;   //查看test庫下面的表
Empty set (0.00 sec)

//創(chuàng)建user表,name 和password 兩個(gè)字段
mysql> CREATE  TABLE  user (name VARCHAR(20),password VARCHAR(20));  Query OK, 0 rows affected (0.27 sec)

//向user表內(nèi)插入若干條數(shù)據(jù)
mysql> insert into user values('Tom','1321');
Query OK, 1 row affected (0.05 sec)

mysql> insert into user values('Alen','7875');
Query OK, 1 row affected (0.08 sec)

mysql> insert into user values('Jack','7455');
Query OK, 1 row affected (0.04 sec)

//查看user表的數(shù)據(jù)
mysql> select * from user;
+------+----------+
| name | password |
+------+----------+
| Tom  | 1321     |
| Alen | 7875     |
| Jack | 7455     |
+------+----------+
3 rows in set (0.01 sec)

//刪除name 等于Jack的數(shù)據(jù)
mysql> delete from user where name = 'Jack';
Query OK, 1 rows affected (0.06 sec)

//修改name等于Alen 的password 為 1111
mysql> update user set password='1111' where name = 'Alen';
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

//查看表內(nèi)容
mysql> select * from user;
+--------+----------+
| name   | password |
+--------+----------+
| Tom    | 1321     |
| Alen   | 1111     |
+--------+----------+
3 rows in set (0.00 sec)

 

五、python 操作mysql數(shù)據(jù)庫基礎(chǔ)

 

復(fù)制代碼 代碼如下:


#coding=utf-8
import MySQLdb

 

conn= MySQLdb.connect(
        host='localhost',
        port = 3306,
        user='root',
        passwd='123456',
        db ='test',
        )
cur = conn.cursor()

#創(chuàng)建數(shù)據(jù)表
#cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

#插入一條數(shù)據(jù)
#cur.execute("insert into student values('2','Tom','3 year 2 class','9')")


#修改查詢條件的數(shù)據(jù)
#cur.execute("update student set class='3 year 1 class' where name = 'Tom'")

#刪除查詢條件的數(shù)據(jù)
#cur.execute("delete from student where age='9'")

cur.close()
conn.commit()
conn.close()

 

 

復(fù)制代碼 代碼如下:

>>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root', passwd='123456',db ='test',)

 

Connect() 方法用于創(chuàng)建數(shù)據(jù)庫的連接,里面可以指定參數(shù):用戶名,密碼,主機(jī)等信息。

這只是連接到了數(shù)據(jù)庫,要想操作數(shù)據(jù)庫需要?jiǎng)?chuàng)建游標(biāo)。

復(fù)制代碼 代碼如下:

>>> cur = conn.cursor()


通過獲取到的數(shù)據(jù)庫連接conn下的cursor()方法來創(chuàng)建游標(biāo)。

復(fù)制代碼 代碼如下:

>>> cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")


通過游標(biāo)cur 操作execute()方法可以寫入純sql語句。通過execute()方法中寫如sql語句來對數(shù)據(jù)進(jìn)行操作。

 

 

復(fù)制代碼 代碼如下:

>>>cur.close()


cur.close() 關(guān)閉游標(biāo)

復(fù)制代碼 代碼如下:

>>>conn.commit()


conn.commit()方法在提交事物,在向數(shù)據(jù)庫插入一條數(shù)據(jù)時(shí)必須要有這個(gè)方法,否則數(shù)據(jù)不會被真正的插入。

復(fù)制代碼 代碼如下:

>>>conn.close()


Conn.close()關(guān)閉數(shù)據(jù)庫連接

 

六、插入數(shù)據(jù)

通過上面execute()方法中寫入純的sql語句來插入數(shù)據(jù)并不方便。如:

復(fù)制代碼 代碼如下:

>>>cur.execute("insert into student values('2','Tom','3 year 2 class','9')")


我要想插入新的數(shù)據(jù),必須要對這條語句中的值做修改。我們可以做如下修改:

 

 

復(fù)制代碼 代碼如下:


#coding=utf-8
import MySQLdb

 

conn= MySQLdb.connect(
        host='localhost',
        port = 3306,
        user='root',
        passwd='123456',
        db ='test',
        )
cur = conn.cursor()

#插入一條數(shù)據(jù)
sqli="insert into student values(%s,%s,%s,%s)"
cur.execute(sqli,('3','Huhu','2 year 1 class','7'))

cur.close()
conn.commit()
conn.close()

 

假如要一次向數(shù)據(jù)表中插入多條值呢?

 

復(fù)制代碼 代碼如下:


#coding=utf-8
import MySQLdb

 

conn= MySQLdb.connect(
        host='localhost',
        port = 3306,
        user='root',
        passwd='123456',
        db ='test',
        )
cur = conn.cursor()

#一次插入多條記錄
sqli="insert into student values(%s,%s,%s,%s)"
cur.executemany(sqli,[
    ('3','Tom','1 year 1 class','6'),
    ('3','Jack','2 year 1 class','7'),
    ('3','Yaheng','2 year 2 class','7'),
    ])

cur.close()
conn.commit()
conn.close()

 

executemany()方法可以一次插入多條值,執(zhí)行單挑sql語句,但是重復(fù)執(zhí)行參數(shù)列表里的參數(shù),返回值為受影響的行數(shù)。

七、查詢數(shù)據(jù)

也許你已經(jīng)嘗試了在python中通過

復(fù)制代碼 代碼如下:

>>>cur.execute("select * from student")


來查詢數(shù)據(jù)表中的數(shù)據(jù),但它并沒有把表中的數(shù)據(jù)打印出來,有些失望。

 

來看看這條語句獲得的是什么

復(fù)制代碼 代碼如下:


>>>aa=cur.execute("select * from student")

 

>>>print aa

5


它獲得的只是我們的表中有多少條數(shù)據(jù)。那怎樣才能獲得表中的數(shù)據(jù)呢?進(jìn)入python shell

 

 

復(fù)制代碼 代碼如下:

>>> import MySQLdb
>>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root',    passwd='123456',db ='test',)
>>> cur = conn.cursor()
>>> cur.execute("select * from student")
5L
>>> cur.fetchone()
(1L, 'Alen', '1 year 2 class', '6')
>>> cur.fetchone()
(3L, 'Huhu', '2 year 1 class', '7')
>>> cur.fetchone()
(3L, 'Tom', '1 year 1 class', '6')
...
>>>cur.scroll(0,'absolute')

 

 fetchone()方法可以幫助我們獲得表中的數(shù)據(jù),可是每次執(zhí)行cur.fetchone() 獲得的數(shù)據(jù)都不一樣,換句話說我沒執(zhí)行一次,游標(biāo)會從表中的第一條數(shù)據(jù)移動到下一條數(shù)據(jù)的位置,所以,我再次執(zhí)行的時(shí)候得到的是第二條數(shù)據(jù)。

scroll(0,'absolute') 方法可以將游標(biāo)定位到表中的第一條數(shù)據(jù)。

還是沒解決我們想要的結(jié)果,如何獲得表中的多條數(shù)據(jù)并打印出來呢?

 

復(fù)制代碼 代碼如下:


#coding=utf-8
import MySQLdb

 

conn= MySQLdb.connect(
        host='localhost',
        port = 3306,
        user='root',
        passwd='123456',
        db ='test',
        )
cur = conn.cursor()

#獲得表中有多少條數(shù)據(jù)
aa=cur.execute("select * from student")
print aa

#打印表中的多少數(shù)據(jù)
info = cur.fetchmany(aa)
for ii in info:
    print ii
cur.close()
conn.commit()
conn.close()

 

通過之前的print aa 我們知道當(dāng)前的表中有5條數(shù)據(jù),fetchmany()方法可以獲得多條數(shù)據(jù),但需要指定數(shù)據(jù)的條數(shù),通過一個(gè)for循環(huán)就可以把多條數(shù)據(jù)打印出啦!執(zhí)行結(jié)果如下:

復(fù)制代碼 代碼如下:

5
(1L, 'Alen', '1 year 2 class', '6')
(3L, 'Huhu', '2 year 1 class', '7')
(3L, 'Tom', '1 year 1 class', '6')
(3L, 'Jack', '2 year 1 class', '7')
(3L, 'Yaheng', '2 year 2 class', '7')
[Finished in 0.1s]

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 调教女秘书 | 国产精品亚洲专区在线播放 | 亚洲卡一卡2卡三卡4卡无卡三 | 国产精品一区二区在线观看完整版 | 91在线亚洲综合在线 | 探花 在线 | 日本免费全黄一级裸片视频 | 国色天香社区视频在线观看免费完整版 | 精品亚洲一区二区三区在线播放 | 嗯啊好大好爽 | 成年私人影院免费视频网站 | 日本护士撒尿xxxx欧美 | 国产亚洲人成网站在线观看不卡 | 国产精品免费aⅴ片在线观看 | 91香蕉视频网址 | 亚洲午夜精品久久久久久人妖 | 国产一区二区三区水野朝阳 | 亚洲一区二区三区深夜天堂 | 精品久久香蕉国产线看观看麻豆 | 国产我不卡 | 国产重口老太伦 | 国产大胆歌舞团网站 | 99久久免费国内精品 | 国产在线观看网站 | 免费一级欧美片片线观看 | 成年男女免费大片在线观看 | 色综合精品 | 欧美a欧美1级 | 免费特黄一区二区三区视频一 | 国产成年人网站 | 日本五级床片全都免费播放 | 成人精品视频一区二区在线 | 7777奇米四色 | 亚洲天堂免费观看 | 特黄一级大片 | 成年人在线视频免费观看 | 久久学生精品国产自在拍 | www在线视频在线播放 | 二次元美女互摸隐私互扒 | 欧美va免费精品高清在线 | 青青草原国产视频 |