Python操作MySQL數(shù)據(jù)庫的示例代碼
1. MySQL Connector
1.1 創(chuàng)建連接
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','port':'3306', 'user':'root','password':'password', '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, ’SALESMAN’, Decimal(’1250.00’)) (7566, ’MANAGER’, Decimal(’2975.00’)) (7654, ’SALESMAN’, Decimal(’1250.00’)) (7698, ’MANAGER’, Decimal(’2850.00’)) (7782, ’MANAGER’, Decimal(’2450.00’)) (7788, ’ANALYST’, Decimal(’3000.00’)) (7839, ’PRESIDENT’, Decimal(’5000.00’)) (7844, ’SALESMAN’, Decimal(’1500.00’)) (7900, ’CLERK’, Decimal(’950.00’)) (7902, ’ANALYST’, Decimal(’3000.00’)) (7934, ’CLERK’, Decimal(’1300.00’))
1.3 SQL注入攻擊
username=1 OR 1=1 password=1 OR 1=1 在使用字符串直接拼接時(shí)OR之前不管對(duì)錯(cuò),與OR結(jié)合都為true 解決方法——預(yù)編譯(也可以提高速度)1.4 事務(wù)管理和異常處理
sql連接和使用異常處理異常
import mysql.connector try: con=mysql.connector.connect( host='localhost',port='3306', user='root',password='password', 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 刪除數(shù)據(jù)
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() 反復(fù)執(zhí)行一條SQL語句
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 = 'INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);' date=[[70,'SALES','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. 數(shù)據(jù)庫連接池
數(shù)據(jù)庫的連接是昂貴的,一個(gè)連接要經(jīng)過TCP三次握手,四次揮手,而且一臺(tái)計(jì)算機(jī)的最大線程數(shù)也是有限的 數(shù)據(jù)庫連接池技術(shù)就是先創(chuàng)建好連接,再直接拿出來使用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 = 'INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);' cursor.execute(sql, (70, 'SALES', 'HUBAI')) con.commit() except Exception as e: if 'con' in dir(): con.rollback() print(e) # do not need to close con
以上就是Python操作MySQL數(shù)據(jù)庫的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Python操作MySQL數(shù)據(jù)庫的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 三道java新手入門面試題,通往自由的道路--JVM2. 一款功能強(qiáng)大的markdown編輯器tui.editor使用示例詳解3. Python判斷字符串是否為合法標(biāo)示符操作4. ASP.NET 2.0頁面框架的幾處變化5. Python接口測(cè)試文件上傳實(shí)例解析6. python 將html轉(zhuǎn)換為pdf的幾種方法7. vue項(xiàng)目登錄成功拿到令牌跳轉(zhuǎn)失敗401無登錄信息的解決8. Python字符串及文本模式方法詳解9. 使用AJAX異步通信技術(shù)實(shí)現(xiàn)搜索聯(lián)想和自動(dòng)補(bǔ)全示例10. 如何學(xué)習(xí)html的各種標(biāo)簽
