使用python连接mysql数据库数据,有以下两种读取数据的方式推荐。
一种是通过游标,及fetch系列方法进行操作,另一种是通过pandas的read_sql()进行读取并操作。各种方法各有优劣,可根据具体情形,择优选择使用。
示例如下:
fetchone/fetchmany/fetchall
获取一条、多条、全部条。
import pymysql
# 数据库相关信息
dbHost = 'xxxxxxx'
dbUser = 'xxx'
dbPassword = '******'
dbName = 'xxx'
dbCharset = 'utf8'
conn = pymysql.connect(host=dbHost, port=3306, user=dbUser, password=dbPassword, db=dbName, charset=dbCharset)
# 获取游标对象
cs = conn.cursor()
# 通过游标对象,执行sql语句,返回值为受影响记录的行数
r = cs.execute('select * from goods')
# 获取一条数据
print(cs.fetchone()) # 第一条数据
print("==============================================")
# 再次执行会获取第二条数据
print(cs.fetchone()) # 第二条数据
# 获取多条数据
print(cs.fetchmany(3)) # 指定条数
# 获取全部数据
print(cs.fetchall())
# 再次执行,获取到的将是一个空元组,因为上边的fetchall已经取完了(游标可以理解为对获取位置的标记)
print(cs.fetchall()) # 当获取完毕,再查询数据返回为()
# 获取结束后,要有始有终,关闭游标和数据库连接
# 关闭游标
cs.close()
# 关闭连接
conn.close()
pandas.read_sql()
使用pandas库的read_sql()函数获取数据,将得到一个DataFrame。
import pymysql
import pandas as pd
# 数据库相关信息
dbHost = 'xxxxxxx'
dbUser = 'xxx'
dbPassword = '******'
dbName = 'xxx'
dbCharset = 'utf8'
conn = pymysql.connect(host=dbHost, port=3306, user=dbUser, password=dbPassword, db=dbName, charset=dbCharset)
sql = "select xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
df = pd.read_sql(sql, conn)
print(df)
# 关闭连接
conn.close()