网站首页 文章专栏 使用数据库(mysql, sqlite, sqlalchemy)
不管是写爬虫,还是做普通的数据处理,使用数据库都会使代码更加复杂,但也好处多多。一个明显的优势就是我们的程序拥有了*断点继续运行*的功能。即使在运行中出了错误,或者主机意外关机,我们的已经处理过的数据都不会被破坏。
在python中使用数据库也非常简便,我经常接触的数据库是mysql和sqlite.
pip3 install pymysql
import pymysql
## 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
## 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
## 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
## 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
## 获取所有记录列表
## results = cursor.fetchall()
## 确认修改
## db.commit()
## 回退
## db.rollback()
print ("Database version : %s " % data)
db.close()
sqlite3是python3的内置模块,无需安装
连接数据库示例
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
print("Table created successfully")
conn.commit()
conn.close()
sqlalchemy是一个对象映射的库,自动帮我们完成从数据库数据类型到python数据类型对的映射,
从而摆脱对特定sql语言的依赖,使我们专注于业务逻辑的实现。
pip3 install sqlalchemy
## 导入:
from sqlalchemy import Column, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
## 创建对象的基类:
Base = declarative_base()
## 定义User对象:
class User(Base):
## 表的名字:
__tablename__ = 'user'
## 表的结构:
id = Column(String(20), primary_key=True)
name = Column(String(20))
## 初始化数据库连接:
engine = create_engine('mysql+pymysql://root:password@localhost:3306/test')
## 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
## 创建session对象:
session = DBSession()
## 创建新User对象:
new_user = User(id='5', name='Bob')
## 添加到session:
session.add(new_user)
## 提交即保存到数据库:
session.commit()
## 关闭session:
session.close()
## 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
user = session.query(User).filter(User.id=='5').one()
https://www.cnblogs.com/lsdb/p/9835894.html 使用 sqlite3