链接sqlalchemy数据库
# Mysql所在主机名
HOSTNAME = "127.0.0.1"
# 监听端口号 默认3306
PORT = 3306
# 主机名和密码
USERNAME = "root"
PASSWORD = "1221"
# 创建的数据库名称
DATABASE = "database_learn"
app.config['SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8'
在app.config中配置好数据库的相关信息,使用SQLAlchemy(app)创建一个db对象,SQLAlchemy会自动读取app.config中的信息
验证数据库是否连接成功
db = SQLAlchemy(app)
with app.app_context():
with db.engine.connect() as conn:
rs = conn.execute("select 1")
print(rs.fetchone())
此时部分用户可能会报错(比如我自己)
sqlalchemy.exc.**ObjectNotExecutableError: Not an executable object: 'select 1**'
“select 1”不是一个可执行项目
解决方法
文本sql的执行,需要使用sqlalchemy中的text()方法处理字符串,再执行语句
#引入包
from sqlalchemy import text
#修改为
rs = conn.execute(text("select 1"))
ORM模型
例:创建数据类型User
class User(db.Model):
__tablename__ = "user"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(100), nullable=False)
password = db.Column(db.String(100), nullable=False)
#等同于sql语句
#user = User(username="法外狂徒张三",password="111111")
#sql : insert user(username, password) values('法外狂徒张三', '111111');
创建数据库(注意上下文)
with app.app_context():
db.create_all()