C:ProgramDataAnaconda3libsite-packagessqlalchemyenginebase.py in_wrap_pool_connect(self, fn, connection)2157try:-> 2158returnfn()2159except dialect.dbapi.Error as e:
▲(点击可查看大图)
# 用户名,密码,数据库名称包含特殊字符串报错解决方法# 方法二:使用pymysql.connect()方法建立连接import pymysqleng = pymysql.connect("118.190.000.111","zhangjian","zhangjiang*2018","demo")data = pd.read_sql(sql = "select * from orderitem limit 10",con=eng)data
▲(点击可查看大图)
# pymsql.connect连接,读入指定表名称,会报错,关键信息1064eng=pymysql.connect(host="118.190.000.111",user="zhagnjian",password="zhangjian*2018",db="demo",charset='utf8')data = pd.read_sql(sql = "category",con=eng)data
▲(点击可查看大图)
使用connection.cursor()方法读取数据库文件# 导入sql文件 使用官方文档案例方法#导入数据库模块import pymysql# 连接数据库eng = pymysql.connect("118.190.000.111","zhangjian","ZhangJian*2018","demo")# 使用 cursor() 方法创建一个游标对象 cursorcursor = eng.cursor()# 编写sql语句sql = """select * from orderitem limit 10;"""# 使用 execute() 方法执行 SQL 查询cursor.execute(sql)# 使用 fetchall() 方法获取所有数据.data = cursor.fetchall()# 关闭数据库连接eng.close()# 返回元组data# 返回信息包括数据类型等数据列信息
▲(点击可查看大图)
# 将元组转化为DataFramedf2 = pd.DataFrame(data = list(data) ,columns = ['SDate', 'ShopID', 'SheetID', 'GoodsID','CateID', 'Qty', 'CostValue','SaleValue', 'OriSaleValue', 'Cost', 'Price'] )df2
04 读入数据库文件方法总结
使用create_engine方法能够满足绝大部分数据库连接与操作命令;
数据库连接信息包含特殊字符串,需要使用mysql.connect()作为连接方法;
pd.read_sql()方法读入数据库文件,返回数据框结构,可以快速浏览数据汇总;
pd.read_sql()使用con参数使用pymsql.connect()方法,sql参数不能直接使用表名称,需要使用完整的sql语句;
使用 cursor() 方法创建游标的方法读取sql语句,返回的是包含列信息的元组,
综上所述,在pandas框架下使用create_engine 加read_sql()方法,读取数据库文件,代码简洁,易懂,返回的是据框;此方法可避免了数据库连接工具与python间的切换时间,有利于提高工作效率。返回搜狐,查看更多