Python 操做 MySQL 數據庫

 

使用示例:

import pymysql  #python3
conn=pymysql.connect(host="localhost",port=3306,user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必須的
cursor = conn.cursor() sql="select * from user_info" result=cursor.execute(sql)   #不論增刪查改,result都是受影響的記錄數,int型
for row in cursor:   #遍歷結果集
    print(row)  #輸出一條記錄,元組形式
    print(row[0])  #輸出記錄中的某個字段
cursor.close() conn.close()

 

 

提取一條記錄:

import pymysql  #python3
conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必須的
cursor = conn.cursor() sql="select * from user_info" result=cursor.execute(sql) print(cursor.fetchone())  #提取並返回一條記錄,指針會自動後移。最初指針指向第一條以前。第一條
print(cursor.fetchone())  #第二條。元組形式。
print(cursor.fetchone()[0])  #一個字段,不能使用字段名,只能使用索引
cursor.close() conn.close()

 

 

提取多條記錄:

import pymysql  #python3
conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必須的
cursor = conn.cursor() sql="select * from user_info" result=cursor.execute(sql) print(cursor.fetchmany(2))   #提取指定的條數,指針會自動後移。只要是提取,指針都會自動後移。
for row in cursor:  #cursor中是從第三行開始的記錄
    print(row) #fetchmany()返回值是嵌套的元組形式。 ((1, 'chy', 200.0), (2, 'zhangsan', 200.0))。一個元素即一條記錄。 #fetchall()是提取結果集的全部記錄 #cursor存放結果集,提取就是把一些記錄從cursor中提取出來(從cursor中拿出來,cursor中再也不有這些記錄了)
cursor.close() conn.close()

 

 

設置sql語句參數:

import pymysql  #python3
conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必須的
cursor = conn.cursor() id=1 name="chy"
# sql="select * from user_info where id=%d and name='%s'"%(id,name) #若是是字符串,%s要加引號 sql="select * from user_info where id={} and name='{}'".format(id,name) #若是是字符串,{}也要加引號
result=cursor.execute(sql) print(cursor.fetchall()) #提取結果集中全部的記錄數 cursor.close() conn.close()

 

 

 

插入一條記錄:

import pymysql  #python3
conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必須的
cursor = conn.cursor() id=3 name="wangwu" money=100 sql="insert into user_info (id,name,money) values (%d,'%s',%d)"%(id,name,money)  #若是是字符串,佔位的要加引號
result=cursor.execute(sql)  #增刪查改都是execute
print(result)  #1 搜相應的記錄數
print(cursor.fetchall())  #不會報錯,空元組
conn.commit()  #須要提交纔會同步到數據庫。缺乏此句代碼,不會同步到數據庫。
cursor.close() conn.close()

 

 

增刪改的操做相似,注意增刪改都須要conn.commit()纔會提交到數據庫。python

 

 

 

另外一種設置參數的方式:

import pymysql  #python3
conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8") cursor = conn.cursor() sql="insert into user_info (id,name,money) values (%s,%s,%s)" #若是是在execute()中注入數據,無論是什麼類型,都必須寫成%s,且不能加引號 result=cursor.execute(sql,(5,"name",10)) #在execute()中注入數據。在這裏區分數據類型。使用元組、列表都可 #result=cursor.execute(sql,[5,"name",10]) 
conn.commit() cursor.close() conn.close()

 

 

 

批量操做:

import pymysql  #python3
conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8") cursor = conn.cursor() sql="insert into user_info (id,name,money) values (%s,%s,%s)" #若是是在execute()中注入數據,無論是什麼類型,都必須寫成%s,且不能加引號
data=((17,"chy",90),(18,"chy",99)) #至少2個元素,使用嵌套的元組、列表都可 #data=[[17,"chy",90],[18,"chy",99]]
try: result=cursor.executemany(sql,data) #批量操做,注入嵌套的元組。注意是executemany(),且必須是嵌套的元組,元組中至少要有2個元組(記錄),只有一條會出錯。
    conn.commit()   #executemany()是執行2條及以上的操做,因此至少2個元素
except Exception as e: print(e) conn.rollback() #失敗就回滾
cursor.close() conn.close()
相關文章
相關標籤/搜索