1 Python连接sqlite3
sqlite3是一种文件数据库,Python内置了sqlite3驱动:
import sqlite3
# 数据库连接
con = sqlite3.connect('mydata.sqlite')
# 执行sql-建表语句
query = "CREATE TABLE test (a VARCHAR(20), b VARCHAR(20), c REAL, d INTEGER);"
con.execute(query)
con.commit()
# 批量执行sql-插入操作
data = [('Atlanta', 'Georgia', 1.25, 6),
('Tallahassee', 'Florida', 2.6, 3),
('Sacramento', 'California', 1.7, 5)]
stmt = "INSERT INTO test VALUES(?, ?, ?, ?)"
con.executemany(stmt, data)
# 执行sql查询并读取结果
cursor = con.execute('select * from test')
rows = cursor.fetchall()
pd.DataFrame(rows, columns=[x[0] for x in cursor.description]) # 将结果转化为DataFrame
2 使用SQLAlchemy简化操作
SQLAlchemy是为Python编程语言提供的开源SQL工具包及对象关系映射器(ORM)
SQLAlchemy本身无法操作数据库,其必须通过pymysql等第三方插件和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作。
使用sqlalchemy进行数据库操作时,需要先通过sqlalchemy.create_engine
函数建立一个指定数据库的链接引擎对象,并指定的数据库连接信息即可创建。
数据库连接信息:数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名
代码示例:
from sqlalchemy import create_engine
# 连接sqlite3(内置sqlite3驱动)
engine = create_engine('sqlite:///mydata.sqlite')
df = pd.read_sql('select * from test', engine) # sql查询示例
# 连接MySQL(需要安装mysql-python作为mysql的链接驱动)
engine = create_engine('mysql+mysqldb://root:[email protected]:3306/dbname')
df = pd.read_sql('select * from test', engine) # sql查询示例
# 连接Oracle(需要安装cx_oracle作为oracle的链接驱动)
engine = create_engine('oracle+cx_oracle://scott:tiger@tnsname')
df = pd.read_sql('select * from test', engine) # sql查询示例
# 连接Microsoft SQL Server(需要安装pyodbc或pymssql作为sql-server的链接驱动)
db = create_engine('mssql+pyodbc://scott:tiger@mydsn')
db = create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')