Python 在 MySQL 中读取、写入数据

Python 在 MySQL 中读取、写入数据

写入数据:


import pandas as pd  
from sqlalchemy import create_engine  
import pymysql

#准备一个示例数据
df = ts.get_hist_data('000875')#读取数据,格式为DataFrame  
#创建一个engine
engine = create_engine('mysql://username:password@localhost:3306/databasename?charset=utf8') #databasename是连接的数据库名字,必须事先创建。 字符编码设置为utf8,否则有些latin字符不能处理
pd.io.sql.to_sql(df,'table', engine, schema='stock', if_exists='append') #table是databasename下的一张表,如果不存在,就创建这张表。如果存在,当if_exists='append',就以追加的方式写入数据。

换一种写法,利用 dataframe 实例的 to_sql 方法:


engine = create_engine('mysql://root:1234@localhost:3306/stock?charset=utf8') 
try:#存入数据库,有时候运行一次报错,运行第二次就没问题了,这里使用try函数。报错的时候,其实在数据库中创建了表头,只是还没写入数据。
    df.to_sql('ticks', engine, if_exists='append') 
except Exception:
    df.to_sql('ticks', engine, if_exists='append')

读取数据:

#创建engine
engine = create_engine('mysql://root:1234@localhost:3306/stock?charset=utf8') 
#从数据库读取数据
df1 = pd.read_sql('tick_data',engine)#从数据库中读取表存为DataFrame  

通过查询方式读取数据:

#连接数据库的参数
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'0428',
          'db':'world',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }
#连接数据库
db = pymysql.connect(**config)
#创建游标
cursor = db.cursor()
## 执行SQL,并返回收影响行数
cursor.execute('select * from city')
result = cursor.fetchall()
type(result) #list 查询结果是一个list,而pd.read_sql 读入了一个dataframe;
df3 = pd.DataFrame(result) #将查询结果转为一个dataframe。 

db.commit() #提交更改
cursor.close() #关闭游标
db.close() #关闭数据库

猜你喜欢

转载自blog.csdn.net/zhanshirj/article/details/74732718