第一步:连接MySQL,以便执行SQL语句
import MySQLdb as msd
import pandas as pd
conn = msd.connect(host='localhost', # 不能使用 hostname
port=3306,
user='root', # 不能使用 username
password='写user对应的密码', # 可以缩写为passwd
db='database_name', # 可以使用database
charset='utf8'
)
cur = conn.cursor()
第二步:输入SQL语句 -> 执行SQL -> 结束
cur.execute("CREATE DATABASE test;")
cur.execute("CREATE TABLE haha(row_1 varchar(20);")
data = cur.execute("SELECT * FROM haha;")
print(data) # print返回的是“行数”。
# 如果想把SQL结果导入pandas DataFrame,进行如下操作
# SQL = "SELECT * FROM haha;"
# df = pd.read_sql(sql=SQL, con=conn)
# print(df)
cur.close()
conn.close()
附注: 涉及的函数
- 函数
(官方文档链接)pandas.read_sql()
pandas.read_sql(
"""常用参数"""
sql, # 输入SQL
con, # 搭建好的sql 链接,如上边案例中的conn=(<blabla>),具体参数见下边的函数
chunksize # int类型,默认值是None。指定一次取出来的数据量,避免数据过大导致内不足而不能一次性取出数据
"""不常用参数"""
columns, # list类型,默认值是None。筛选出我们需要的columns。
params, # 可以是list/tuple/dict,默认值是None。根据自己的SQL官方文档,传入的参数
index_col, # 可以是string/list,默认值是None。被用来当做index/multiindex。
coerce_float, # 把SQL里边的以非数值型保存的数字decimal转化为float。
parse_dates, # 可以是list/dict,默认值None。对象是column,详见官方文档。
)
注:SQL中float和decimal的区别(参考链接)
· float和decimal,分别是非标准数据类型和标准数据类型。
· 区别是,float等非标准类型、在DB中保存的是近似值,而decimal则是以字符串的形式保存数值。
- 函数
(文档链接)MySQL.connect()
MySQL.connect(
"""常用参数"""
host, # 指明要连接的host
user, # 指明登录的用户名
passwd, # 指明登录用户的密码
db, # 指明要连接的database
port, # 指明登录的port
charset, # 指定字符编码,比如gbk/utf8/unicode等等
connect_timeout, # 指明超过X秒之后,放弃链接db
"""不常用参数"""
unix_socket,
conv,
compress,
named_pipe
init_command,
read_default_file,
read_default_group,
cursorclass,
use_unicode,
sql_mode,
ssl
)