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()