成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python MySQLdb模塊

ccj659 / 843人閱讀

摘要:模塊安裝系統(tǒng)報(bào)錯(cuò)安裝如果是系統(tǒng),則需要先安裝服務(wù)。使用字典形式返回?cái)?shù)據(jù)執(zhí)行命令,并不會(huì)直接打印可以使用來讀取。

Python MySQLdb模塊 安裝
系統(tǒng):Ubuntu 14.04
MySQLdb
$ pip install Mysql-python
-> 報(bào)錯(cuò):EnvironmentError: mysql_config not found (安裝libmysqlclient-dev)
$ apt-get install libmysqlclient-dev
$ pip install Mysql-python

如果是MAC系統(tǒng),則需要先安裝 mysql 服務(wù)。
使用

查數(shù)據(jù)示例(fetchall()獲取數(shù)據(jù)

import MySQLdb

# 建立連接
conn = MySQLdb.connect(host="127.0.0.1", user="sate", db="dbtest", passwd="password")

# 設(shè)置游標(biāo)
cur = conn.cursor()

# 執(zhí)行SQL命令,并不會(huì)直接返回查詢結(jié)果,而是返回SQL語(yǔ)句影響的行數(shù)
reCount = cur.execute("select * from Products;")
print reCount        # 輸出一個(gè)數(shù)字,是SQL影響的行數(shù)

# 使用 fetchall()方法獲取數(shù)據(jù),循環(huán)輸出結(jié)果,以元祖的方式輸出
for data in cur.fetchall():
    print data
    
# 關(guān)閉連接
cur.close()
conn.close()
# 結(jié)果==》
5
("00001", "hilife")
("00002", "GTL")
("00003", "GLA")
("000004", "TYA")
("000005", "TUH")

插入或者更改數(shù)據(jù)

import MySQLdb

conn = MySQLdb.connect(host="127.0.0.1", user="sate", db="dbtest", passwd="password")
cur = conn.cursor()

# 定義SQL語(yǔ)句
sql = "insert into Products(prod_id, prod_name) values(%s, %s);"
# 定義數(shù)據(jù)
params = ("00002", "GLA")
reCount = cur.execute(sql, params)        #為了防止SQL注入,可以使用該方法
conn.commit()   #提交

cur.close()
conn.close()

批量插入數(shù)據(jù)

import MySQLdb

conn = MySQLdb.connect(host="127.0.0.1", user="sate", db="dbtest", passwd="password")
cur = conn.cursor()

# 要批量插入的數(shù)據(jù)
li = [
    ("000004", "TYA"),
    ("000005", "TUH")
]
sql = "insert into Products(prod_id, prod_name) values(%s, %s);"
# 批量使用executemany
reCount = cur.executemany(sql, li)        #為了防止SQL注入,可以使用該方法
conn.commit()   #提交

cur.close()
conn.close()

之前查看數(shù)據(jù)時(shí),返回是元祖形式,有時(shí)看起來并不明顯,我們可以選擇用字典的方式,將列名一起輸出。

import MySQLdb

conn = MySQLdb.connect(host="127.0.0.1", user="zheng", db="satezheng", passwd="satezheng")

# 使用字典形式返回?cái)?shù)據(jù)
cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)

# 執(zhí)行命令,并不會(huì)直接打印,可以使用fetchall來讀取。
reCount1 = cur.execute("select * from Products")

print reCount1        # 輸出一個(gè)數(shù)字,是SQL影響的行數(shù)
for data in cur.fetchall():
    print data
cur.close()
conn.close()
# 結(jié)果==》
5
{"prod_name": "hilife", "prod_id": "00001"}
{"prod_name": "GLA", "prod_id": "00002"}
{"prod_name": "GTL", "prod_id": "00003"}
{"prod_name": "TYA", "prod_id": "000004"}
{"prod_name": "TUH", "prod_id": "000005"}

cursor讀取執(zhí)行結(jié)果的方法有:

fetchall() 把所有的都讀出來

fetchmany(n) 輸出指定數(shù)量n的行

fetchone() 只返回第一條結(jié)果

fetchone() 一次只返回一條結(jié)果,下次返回第二條,和文件的readlines類似

對(duì)應(yīng)的也會(huì)有指針的概念,scroll()可以指定讀取的位置

cur.scroll(0, mode="absolute")    # 絕對(duì)指針, 0 就是指針的位置
cur.scroll(-1, mode="relative")    # 相對(duì)指針, -1 指針位置向前移一位(指針位置-1)
import MySQLdb

conn = MySQLdb.connect(host="127.0.0.1", user="zheng", db="satezheng", passwd="satezheng")
cur = conn.cursor()

reCount = cur.execute("select * from Products;")

# 使用 fetchone()方法獲取數(shù)據(jù)
data = cur.fetchone()
print data
data = cur.fetchone()
print data
data = cur.fetchone()
print data
# 結(jié)果==》
("00001", "hilife")
("00002", "GTL")
("00003", "GLA")

# 使用絕對(duì)指針時(shí)
...
data = cur.fetchone()
print data
data = cur.fetchone()
print data
cur.scroll(0, mode="absolute")    # 將指針指向 0
data = cur.fetchone()
print data
# 結(jié)果==》
("00001", "hilife")
("00002", "GTL")
("00001", "hilife")

# 使用相對(duì)指針
data = cur.fetchone()
print data
data = cur.fetchone()
print data
cur.scroll(-1, mode="relative")    # 指針位置減1
data = cur.fetchone()
print data
# 結(jié)果==》
("00001", "hilife")
("00002", "GTL")
("00002", "GTL")

cur.lastrawid() 獲取自增id

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40889.html

相關(guān)文章

  • 【過時(shí)】MySQLdbPython 操作 MySQL 數(shù)據(jù)庫(kù)

    摘要:模塊提供的是類似于接口的,而模塊在基礎(chǔ)上又做了進(jìn)一步封裝,使之符合的數(shù)據(jù)庫(kù)規(guī)范。的數(shù)據(jù)庫(kù)規(guī)范建議了種不同的方式來構(gòu)造,只支持其中的一種,代碼類似于的格式化操作。提交修改,回滾。異常發(fā)生時(shí),調(diào)用進(jìn)行回滾。 NOTE(2017-11-18): MySQLdb 不支持 Python 3,而 Python 3 是主流,所以就沒有學(xué)習(xí)的必要了。 環(huán)境:MySQL 5.6.27, Ubuntu 1...

    mj 評(píng)論0 收藏0
  • Mac下安裝MySQL-python

    摘要:使用安裝報(bào)錯(cuò)信息中有這兩行,沒有命令先找下這個(gè)命令在哪里,查到是下命令。解決方法添加一個(gè)軟鏈接,將命令放到環(huán)境變量下然后再執(zhí)行安裝命令看到安裝提示有個(gè)警告,安裝的版本是檢測(cè)安裝是否成功使用方法來檢測(cè)模塊是否安裝。 使用easy_install安裝 sudo easy_install MySQL-python 報(bào)錯(cuò)信息中有這兩行,沒有mysql_config命令 sh: mysql_co...

    xingqiba 評(píng)論0 收藏0
  • Python 連接 MySQL

    摘要:一普通連接方法使用模塊普通方式連接。返回結(jié)果表示影響的行數(shù)。查詢時(shí)不需要操作,插入更新刪除時(shí)需要提交。模塊點(diǎn)此下載類繼承自,表示一個(gè)新的連接池。如果需要新的連接池,按照如下格式新增即可。一個(gè)連接池可同時(shí)提供多個(gè)實(shí)例對(duì)象。 一、普通 MySQL 連接方法 ??使用模塊 MySQLdb 普通方式連接。 #!/usr/bin/env python # _*_ coding:utf-8 _*_...

    williamwen1986 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<