Python操作MySQL資料庫的示例程式碼
阿新 • 來源:網路 • 發佈:2020-07-17
1. Mysql Connector
1.1 建立連線
import mysql.connector
config={
"host":"localhost","port":"3306","user":"root","password":"password","database":"demo"
}
con=mysql.connector.connect(**config)
import mysql.connector
config={
"host":"localhost","database":"demo"
}
con=mysql.connector.connect(**config)
1.2 Cursor
import mysql.connector
con=mysql.connector.connect(
host="localhost",port="3306",user="root",password="password",database="demo"
)
cursor=con.cursor()
sql="SELECT empno,job,sal FROM t_bonus;"
cursor.execute(sql)
print(type(cursor))
for i in cursor:
print(i)
con.close()
Result:
<class 'mysql.connector.cursor_cext.CMySQLCursor'>
(7369,'CLERK',Decimal('8000.00'))
(7499,'SALESMAN',Decimal('1600.00'))
(7521,Decimal('1250.00'))
(7566,'MANAGER',Decimal('2975.00'))
(7654,Decimal('1250.00'))
(7698,Decimal('2850.00'))
(7782,Decimal('2450.00'))
(7788,'ANALYST',Decimal('3000.00'))
(7839,'PRESIDENT',Decimal('5000.00'))
(7844,Decimal('1500.00'))
(7900,Decimal('950.00'))
(7902,Decimal('3000.00'))
(7934,Decimal('1300.00'))
1.3 SQL注入攻擊
- username=1 OR 1=1 password=1 OR 1=1
- 在使用字串直接拼接時OR之前不管對錯,與OR結合都為true
- 解決方法——預編譯(也可以提高速度)
1.4 事務管理和異常處理
sql連線和使用異常處理異常
import mysql.connector
try:
con=mysql.connector.connect(
host="localhost",database="demo"
)
con.start_transaction()
cursor=con.cursor()
sql="INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"
cursor.execute(sql,(60,"SALES","HUBAI"))
con.commit()
except Exception as e:
if "con" in dir():
con.rollback()
print(e)
finally:
if "con" in dir():
con.close()
1.5 刪除資料
import mysql.connector,mysql.connector.pooling
config={
"host": "localhost","port": "3306","user": "root","password": "password","database": "demo"
}
try:
pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)
con=pool.get_connection()
con.start_transaction()
cursor = con.cursor()
sql = "DELETE FROM t_dept WHERE deptno=%s"
cursor.execute(sql,(70,))
con.commit()
except Exception as e:
if "con" in dir():
con.rollback()
print(e)
# do not need to close con
executemany() 反覆執行一條SQL語句
import mysql.connector,pool_size=5)
con=pool.get_connection()
con.start_transaction()
cursor = con.cursor()
sql = "INSERT INTO t_dept(deptno,%s);"
date=[[70,"BEIJING"],[80,"ACTOR","SHANGHAI"]]
cursor.executemany(sql,date)
con.commit()
except Exception as e:
if "con" in dir():
con.rollback()
print(e)
# do not need to close con
2. 資料庫連線池
- 資料庫的連線是昂貴的,一個連線要經過TCP三次握手,四次揮手,而且一臺計算機的最大執行緒數也是有限的
- 資料庫連線池技術就是先建立好連線,再直接拿出來使用
import mysql.connector,"HUBAI"))
con.commit()
except Exception as e:
if "con" in dir():
con.rollback()
print(e)
# do not need to close con
以上就是Python操作MySQL資料庫的示例程式碼的詳細內容,更多關於Python操作MySQL資料庫的資料請關注我們其它相關文章!
