python讀寫mysql數據庫


方法一:

1. python連接mysql數據庫:需要用到 pymysql 庫和 sqlalchemy庫:

import pandas as pd
from sqlalchemy import create_engine
import pymysql

創建連接 create_engine:

con_engine = create_engine('mysql+pymysql://username:passwd@localhost:3306/database_name')
# 示例:
# con_engine = create_engine('mysql+pymysql://root:123456@localhost:3306/database_name') 
# username:數據庫用戶名,例如 root
# passwd:密碼,例如 123456
# localhost:host主機地址,例如:127.0.0.1 
# 3306:是數據庫的端口,一般是3306,但是也可能改變
# database_name:數據庫名 
con_engine = create_engine('mysql+pymysql://username:passwd@localhost:3306/database_name?charset=utf8') #需要時也可用

2. 提供 sql 語句

sql_ = "select * from table_name;" #table_name某個表名

3. 執行查詢,使用 read_sql_query 得到pandas的dataframe數據

df_data = pd.read_sql_query(sql_, con_engine)
xxx = df['key_words'].tolist()
print(xxx)

4. 寫數據到 mysql 數據庫

#寫兩列數據,建立dataframe格式數據
df_write = pd.DataFrame({'id_py':[1,2,3,4],'name_py':['Tom','Bob','Cathy','Jack']})
df_write.to_sql('table_py', con_engine, index = False) # index = False表示不加索引列,寫到table_py表,如果表已經存在,會報錯:ValueError: Table 'table_py' already exists.

 

方法二:使用 read_sql

# username = 'root'
# passwd = '123456'
# database_name = 'db_test'
con_engine = pymysql.connect(host = 'localhost' ,user = username, password = passwd, database = database_name, port=3306, charset = 'utf8') #通過參數形式傳遞,參數是字符串形式
sql_ = "select * from table_name;" #table_name某個表名
df_data = pd.read_sql(sql_ , con_engine)

 

方法三:直接使用pymysql進行查詢,插入數據、更新數據、刪除數據等修改數據表的操作需要添加 commit 和 rollback 語句

import pymysql

# 建立數據庫連接,username, passwd, database_name都是如上,預先定義的參數,localhost也可以替換成某個數據庫的ip地址
con_engine = pymysql.connect(host = 'localhost' ,user = username, password = passwd, database = database_name, port=3306, charset = 'utf8')
 
# 使用cursor()方法獲取游標 
cursor = con_engine.cursor()
 
# SQL語句
sql_ = "select * from table_name;"
try:
   # 執行SQL語句
   cursor.execute(sql_)
   # fetchall()獲取所有記錄,形成的是元組,results = cursor.fetchmany(10)獲取前10條,results = cursor.fetchone()獲取一條數據
   results = cursor.fetchall() 
   for row in results:  #依次獲取每一行數據
      id_ = row[0]  #第1列
      key_words_ = row[1]
      type_words_ = row[2]
      address_name_ = row[3]
      # 打印結果
      print(id_,key_words_,type_words_,address_name_)
except:
   print ("Error: unable to fetch data")
 
# 關閉數據庫連接
con_engine.close()

例如刪除操作:

import pymysql

# 建立數據庫連接,username, passwd, database_name都是如上,預先定義的參數,localhost也可以替換成某個數據庫的ip地址
con_engine = pymysql.connect(host = 'localhost' ,user = username, password = passwd, database = database_name, port=3306, charset = 'utf8')
 
# 使用cursor()方法獲取游標 
cursor = con_engine.cursor()
 
# SQL語句
sql_ = "delete * from table_name where id > 5;"
try:
   # 執行SQL語句
   cursor.execute(sql_)
   con_engine.commit()    #提交修改,類似github的commit操作
except:
   con_engine.rollback()  #不成功則回滾
 
# 關閉數據庫連接
con_engine.close()

 

參考:

https://www.jianshu.com/p/238a13995b2b

https://blog.csdn.net/luoluopan/article/details/100074959

https://www.runoob.com/python3/python3-mysql.html


免責聲明!

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



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