flask学习-pymysql

367 阅读1分钟

链接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()