Python_pymysql+游標(cursor())的應用


pymysql的應用

一、裝包(前提)

py -m pip install pymysql;

 

D:\Python36\python.exe -m pip install pymysql

二、創建連接+游標的應用

1、簡單示例

#coding=utf-8

import pymysql

# 打開數據庫連接
conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer", db = "gloryroad", charset = "utf8") # 使用cursor()方法獲取數據庫的操作游標 cursor = conn.cursor() print(cursor) print(type(cursor))

2、創建數據庫

try:
    conn = pymysql.connect(
    host = "127.0.0.1",
    port = 3306,
    user = "root",
    passwd = "1234qwer"
    )
    cur = conn.cursor()
    cur.execute("CREATE DATABASE IF NOT EXISTS grdb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;")
    cur.close()
    conn.close()
    print("創建數據庫pythonDB成功! ")
except pymysql.Error as e:
    print("Mysql Error %d: %s" %(e.args[0],e.args[1]))

 

#COLLATE utf8_general_ci:大小寫不敏感

3、創建表

#coding=utf-8

import pymysql
try:
    conn = pymysql.connect(
    host = "127.0.0.1",
    port = 3306,
    user = "root",
    passwd = "1234qwer")

    conn.select_db('grdb')# 選擇pythonDB數據庫
    cur = conn.cursor()# 獲取游標
    #如果所建表已存在,刪除重建
    #cur.execute("drop table if exists User;")
    #執行建表sql語句
    cur.execute('''CREATE TABLE User (id int(11) DEFAULT NULL,name varchar(255) DEFAULT NULL,password varchar(255) DEFAULT NULL,birthday date DEFAULT NULL)ENGINE=innodb DEFAULT CHARSET=utf8;''')
    cur.close()
    conn.close()
    print(u"創建數據表成功")
except pymysql.Error as e:
    print("Mysql Error %d: %s" %(e.args[0],e.args[1]))

4、插入表數據

#coding=utf-8
import pymysql

conn = pymysql.connect(
host = "127.0.0.1",
port = 3306,
user = "root",
passwd = "1234qwer",
db = "grdb",
charset = "utf8")
#使用cursor()方法獲取數據庫的操作游標
cursor = conn.cursor()
#插入一條數據
insert = cursor.execute("insert into user values(1,'Tom','123','1990-01-01')")
print(u"添加語句受影響的行數:",insert)

#另一種插入數據方法,通過格式字符串傳入值,此方式可以防止sql注入
sql = "insert into user values(%s,%s,%s,%s)"
insert = cursor.execute(sql,(3,'lucy','efg','1993-02-01'))
print(u"添加語句受影響的行數:",insert)
#關閉游標
cursor.close()
#提交事務
conn.commit()
# 關閉數據庫連接
conn.close()
print(u"sql語句執行成功!")

5、插入數據(含字符串拼接實例)

#coding=utf-8
import pymysql

conn = pymysql.connect(
host = "127.0.0.1",
port = 3306,
user = "root",
passwd = "1234qwer",
db = "grdb",
charset = "utf8")
# 使用cursor()方法獲取數據庫的操作游標
cursor = conn.cursor()
# 插入一條數據
#insert = cursor.execute("insert into user values(1,'Tom','123','1990-01-01')")
#print(u"添加語句受影響的行數:", insert)

# 另一種插入數據方法,通過格式字符串傳入值,此方式可以防止sql注入
sql = "insert into user values(%s,%s,%s,%s)"
j=0
for i in range(100,201):
    insert = cursor.execute(sql,(i,'lucy'+str(i),'efg'+str(i),str(1900+j)+'-02-01'))
    j+=1

# 關閉游標
cursor.close()
# 提交事務
conn.commit()#提交事務后,不能回滾了
# 關閉數據庫連接
conn.close()
print(u"sql語句執行成功!")

6、查詢表數據語句

6.1逐條獲取cursor.fetchone

#coding=utf-8
import pymysql

import pymysql

conn = pymysql.connect(
host = "127.0.0.1",
port = 3306,
user = "root",
passwd = "1234qwer",
db = "grdb",
charset = "utf8")
# 使用cursor()方法獲取數據庫的操作游標
cursor = conn.cursor()
cursor.execute("select * from user")
while 1:
    res = cursor.fetchone()
    if res is None:
    # 表示已經取完結果集
        break
    print(res)
    #將讀取到的時間格式化
    # print(res[-1].strftime("%Y-%m-%d"))
# 關閉游標
cursor.close()
# 提交事務
conn.commit()
# 關閉數據庫連接
conn.close()
print("sql語句執行成功!")

 

#cursor.fetchone  一條一條取數據,每條數據是元祖

6.2獲取n條數據

import pymysql

conn = pymysql.connect(
host = "127.0.0.1",
port = 3306,
user = "root",
passwd = "1234qwer",
db = "grdb",
charset = "utf8")
# 使用cursor()方法獲取數據庫的操作游標
cursor = conn.cursor()
cursor.execute("select * from user")

# 獲取游標處兩條數據
resTuple = cursor.fetchmany(2)
print("結果集類型:",type(resTuple))
for i in resTuple:
    print(i)
# 關閉游標
cursor.close()
# 提交事務
conn.commit()
# 關閉數據庫連接
conn.close()
print("sql語句執行成功!")

7、更新數據

批量更新數據
#批量更新的代碼
import pymysql

conn = pymysql.connect(
host = "127.0.0.1",
port = 3306,
user = "root",
passwd = "1234qwer",
db = "grdb",
charset = "utf8")
# 使用cursor()方法獲取數據庫的操作游標
cursor = conn.cursor()

#查詢一條數據
query = cursor.execute("select * from user")
print("表中所有數據:")
for i in cursor.fetchall():
  print(i)
# 批量更新數據
cursor.executemany("update user set password = %s where name=%s",
[('tomx2x', 'tom'), ('Tomx2x', 'amy')])
# 查看更新后的結果
query = cursor.execute("select * from user where name='tom' or name='amy'")
print("表中所有數據:")
for i in cursor.fetchall():
  print(i)
# 關閉游標
cursor.close()
# 提交事務
conn.commit()
# 關閉數據庫連接
conn.close()
print("sql語句執行成功!")

8、刪除數據

import pymysql

conn = pymysql.connect(
host = "127.0.0.1",
port = 3306,
user = "root",
passwd = "1234qwer",
db = "grdb",
charset = "utf8")
# 使用cursor()方法獲取數據庫的操作游標
cursor = conn.cursor()

cursor.execute("select * from user")
print("表中所有數據:")
for i in cursor.fetchall():
    print(i)
# 刪除數據
delete = cursor.execute("delete from user where name='tom'")
print("刪除語句影響的行數:",delete)

print("刪除一條數據后,表中數據:")
cursor.execute("select * from user")
for i in cursor.fetchall():
    print(i)

# 關閉游標
cursor.close()
# 提交事務
conn.commit()
# 關閉數據庫連接
conn.close()
print("sql語句執行成功!")
cursor.close()

9、回滾事務(roll back)

回滾事務

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM