read_sql_query, read_sql_table
def read_sql_query(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, chunksize=None):
sql: mysql 语句
con: 数据库连接对象
index_col: 字符串或字符串列表,可选,默认值:无 要设置为索引的列(MultiIndex)
coerce_float: 默认为True 尝试将非字符串,非数字对象(如decimal.Decimal)的值转换为浮点值.对SQL结果集很有用.
params: tuple或dict,optional,default:None 要传递给执行方法的参数列表 read_sql_query("insert into cjk_test h values %(data)s",params={'data':v_split[11]})
parse_dates: list或dict,默认值:None 要解析为日期的列名列表
chunksize: int,默认无 如果指定,则返回一个迭代器,其中chunksize是要包含在每个块中的行数
def read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, parse_dates=None, columns=None, chunksize=None):
table_name: 数据库中SQL表的名称
con: 数据库连接对象
schema: str,要查询的数据库中的SQL模式的名称
index_col: 字符串或字符串列表,可选,默认值:无 要设置为索引的列(MultiIndex)
coerce_float: 默认为True 尝试将非字符串,非数字对象(如decimal.Decimal)的值转换为浮点值.对SQL结果集很有用.
parse_dates: tuple或dict,optional,default:None 要传递给执行方法的参数列表 read_sql_query("insert into cjk_test h values %(data)s",params={'data':v_split[11]})
columns: list,从SQL表中选择的列名列表。
chunksize: int,默认无 如果指定,则返回一个迭代器,其中chunksize是要包含在每个块中的行数
dome:
import pandas as pd
import pymysql
from sqlalchemy import create_engine
class mysql_np(object):
def __init__(self):
self.db = pymysql.connect(host='localhost', port=3306, database='test', user='root', password='root',
charset='utf8', autocommit=True)
self.cursor = self.db.cursor()
self.con = create_engine('mysql+pymysql://root:root@127.0.0.1:3306/test').connect()
self.read_pd()
def read_pd(self):
select_sql = 'select * from drug_pool'
insert_sql = "insert into drug_pool(drugLicense, drugName, updateTime) values('S2018', 'aaa', '2019-01-01 10:17:37')"
update_sql = "update drug_pool set drugLicense='11111' WHERE id=102" # insert, update, delete 运行会报错 但mysql的数据会改变
delete_sql = "delete from drug_pool where id=102"
try:
pd.read_sql_query(sql=insert_sql, con=self.db)
except:
pass
finally:
pass
read_sql = pd.read_sql_query(sql=select_sql, con=self.db)
print(read_sql)
read_sql = pd.read_sql_table(table_name='drug_pool', con=self.con, columns=['drugLicense', 'drugName'])
print(read_sql)
if __name__ == "__main__":
mysql_np()