SQL 基础语法创建数据库使用 CREATE DATABASE 语句创建新数据库。例如：CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这将创建一个名为 my_database 的数据库，并设置字符集为 utf8mb4，校对规则为 utf8mb4_unicode_ci。创建表使用 CREATE TABLE 语句创建新表。例如：CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );这将创建一个名为 users 的表，包含以下字段：id（自动递增的整数，作为主键）、name（非空的字符串，最大长度50）、age（整数）、email（唯一的字符串，最大长度100）和 created_at（时间戳，默认值为当前时间戳）。插入数据使用 INSERT INTO 语句向表中插入数据。例如：INSERT INTO users (name, age, email) VALUES ('John Doe', 30, 'john@example.com'), ('Jane Doe', 28, 'jane@example.com'), ('Alice', 25, 'alice@example.com');这将向 users 表中插入3条记录。查询数据使用 SELECT 语句查询表中的数据。例如：SELECT id, name, age FROM users WHERE age > 25 ORDER BY age DESC;这将查询 users 表中年龄大于25的用户，并按年龄降序排列。更新数据使用 UPDATE 语句更新表中的数据。例如：UPDATE users SET age = age + 1 WHERE id = 1;这将将 users 表中 id 为1的用户年龄加1。删除数据使用 DELETE FROM 语句删除表中的数据。例如：DELETE FROM users WHERE id = 3;这将删除 users 表中 id 为3的用户。使用聚合函数聚合函数对数据进行汇总操作。例如：SELECT COUNT(*) FROM users; -- 计算总记录数 SELECT SUM(age) FROM users; -- 计算所有用户年龄之和 SELECT AVG(age) FROM users; -- 计算用户的平均年龄 SELECT MIN(age) FROM users; -- 计算最小年龄 SELECT MAX(age) FROM users; -- 计算最大年龄使用连接 (JOIN)连接用于将多个表的数据组合在一起。例如：-- 假设有另一个表 orders，关联用户表 users SELECT users.name, orders.order_date FROM users INNER JOIN orders ON users.id = orders.user_id WHERE orders.total > 1000;这将查询在 orders 表中订单总额大于1000的用户名称和订单日期。使用子查询子查询允许在一个查询中使用另一个查询的结果。例如：SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE total > 100);以上就是 SQL 基础语法的介绍。
增加数据：INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);删除数据：DELETE FROM table_name WHERE condition;修改数据：UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;查询数据：SELECT column1, column2, ... FROM table_name WHERE condition;
python使用orm操作数据库，最全解释看这一篇就够了！
总体代码如下，后面单独解释每个含义from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import MigrateCommand from flask_migrate import Migrate from flask_script import Manager,Server #实例化一个Flask 对象 app = Flask(__name__) #设置连接数据库的配置,这是以mysql db 为示例来讲解 app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:test@127.0.0.1:3306/dbtest1" #如果设置为True,将跟踪对象的修改并发出信号，默认设置为None app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False #查询时会显示原始SQL语句 app.config['SQLALCHEMY_ECHO']=True #这个对象就包含 sqlalchemy 和 sqlalchemy.orm 中的所有函数和助手 db = SQLAlchemy(app) manager = Manager(app) Migrate(app,db) #创建数据库映射命令 manager.add_command('db',MigrateCommand) #创建启动命令 manager.add_command('start',Server(port=8000,use_debugger=True)) class Role(db.Model):#提供一个名为 Model 的类，用于作为声明模型时的 delarative 基类 __tablename__ = 'roles' #给表起名 id = db.Column(db.Integer,primary_key=True) name = db.Column(db.String(64),unique=True) us = db.relationship("User",backref="role") icon = db.Column(db.String(40),default='default.jpg') def __repr__(self):#用于显示一个可读字符串 return "Role:%s" %self.name class User(db.Model): __tablename__ = 'users' #给表起名 id=db.Column(db.Integer,primary_key=True) name = db.Column(db.String(64),unique=True,index=True) email = db.Column(db.String(64),unique=True) pswd = db.Column(db.String(64)) role_id=db.Column(db.Integer,db.ForeignKey('roles.id')) def __repr__(self): return "User:%s"% self.name if __name__ == '__main__': # db.drop_all() # db 对象调用 SQLAlchemy.drop_all() 方法来删除表: # db.create_all() # db 对象调用 SQLAlchemy.create_all() 方法来创建表: # manager.run() #创建 role1=Role(name="admin") role2=Role(name="test") db.session.add(role1) db.session.commit() db.session.add(role2) db.session.commit() #必须提交会话，但是没有必要在每个请求后删除它(session)，Flask-SQLAlchemy 会帮您完成删除操作 user1=User(name="wang",email="test1@126.com",pswd="1234",role_id=role1.id) user2=User(name="test",email="test2@126.com",pswd="1234",role_id=role2.id) db.session.add_all([user1,user2]) db.session.commit() #查询 user1=User.query.filter_by(name="wang") roles=Role.query.all() for role in roles: print(role.name,role.id) #删除 user=User.query.first() db.session.delete(user) db.session.commit() print(User.query.all()) print("*") print(user) #更新 user=User.query.first() user.name="test" db.session.commit() print(User.query.first()) 连接数据库需要先配置数据库连接字符串，然后在 Flask 中设置数据库相关的参数。常见的关系型数据库包括 SQLite、MySQL、PostgreSQL 等。以下是使用 SQLite 数据库的示例：安装 SQLAlchemy 库和适用于 SQLite 的数据库驱动程序（可选），例如 sqlite3：pip install sqlalchemy pip install sqlite3在 Flask 应用程序中设置数据库连接字符串：from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db' db = SQLAlchemy(app)这个示例中我们配置了 SQLite 数据库的连接字符串，其中 example.db 是数据库文件的名字。也可以使用其他形式的连接字符串，例如 MySQL 和 PostgreSQL 的连接字符串。创建数据模型类，并在类中定义要创建的表格及其列名：class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False)这个示例中我们定义了一个名为 User 的数据模型类，它对应了数据库中的一张 User 表。该表包含三个字段：id、name 和 email。执行迁移操作以创建数据库表：db.create_all()这个命令将根据定义的数据模型类创建相应的数据库表。如果已经存在同名数据库表，则不会进行任何操作。至此，你已经成功地连接了 SQLite 数据库，并且创建了一个名为 User 的数据模型类以及相应的表格。在实践过程中，还需要注意数据库的安全性、性能等问题，具体请参考官方文档。如果您想使用 PyMySQL 库来连接 MySQL 数据库，可以按照以下步骤进行设置：安装 PyMySQL 库：pip install pymysql在 Flask 应用程序中设置数据库连接字符串和相关参数：from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@hostname/database_name' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app)其中，SQLALCHEMY_DATABASE_URI 是数据库连接字符串，username 和 password 是登录 MySQL 时的用户名和密码，hostname 是 MySQL 服务器的主机名或 IP 地址，database_name 是要连接的数据库名。SQLALCHEMY_TRACK_MODIFICATIONS 设置为 False，这样 SQLAlchemy 就不会在每次请求结束后自动提交对数据库的更改。创建数据模型类，并在类中定义要创建的表格及其列名：class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False)这个示例中我们定义了一个名为 User 的数据模型类，它对应了数据库中的一张 User 表。该表包含三个字段：id、name 和 email。执行迁移操作以创建数据库表：db.create_all()这个命令将根据定义的数据模型类创建相应的数据库表。如果已经存在同名数据库表，则不会进行任何操作。至此，你已经成功地连接了 MySQL 数据库，并且创建了一个名为 User 的数据模型类以及相应的表格。在实践过程中，还需要注意数据库的安全性、性能等问题，具体请参考官方文档。使用 SQLAlchemy 创建数据库时，可以通过在定义数据模型类时添加一些属性来指定数据库表中的字段类型、约束和其他属性。下面是一些常用的 SQLAlchemy 字段属性：db.String(length, **kwargs): 表示一个字符串类型的字段，length 参数表示字符串的最大长度。db.Integer(**kwargs): 表示一个整数类型的字段。db.Float(**kwargs): 表示一个浮点数类型的字段。db.Boolean(**kwargs): 表示一个布尔类型的字段。db.Date(**kwargs): 表示一个日期类型的字段。db.Time(**kwargs): 表示一个时间类型的字段。db.DateTime(**kwargs): 表示一个日期时间类型的字段。db.Text(**kwargs): 表示一个文本类型的字段，可以存储更长的文本。db.Unicode(length, **kwargs): 表示一个 Unicode 字符串类型的字段，length 参数表示字符串的最大长度。除了字段类型之外，还可以设置一些其他属性来指定约束和默认值等信息：primary_key=True: 将字段设为主键。unique=True: 给字段添加唯一约束。nullable=False: 禁止字段为空值。default=value: 定义字段的默认值为 value。index=True: 为字段创建索引。例如，下面是一个使用 SQLAlchemy 创建 User 表的例子：from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) created_at = db.Column(db.DateTime, default=datetime.utcnow)这个例子中，我们定义了一个名为 User 的数据模型类，并在其中定义了三个字段：id、name 和 email。其中，id 字段是主键，name 和 email 字段都不能为空。另外，我们还定义了一个名为 created_at 的字段，它的类型是 DateTime，并设置默认值为当前时间。除上述属性之外，SQLAlchemy 还提供了很多其他的选项和参数，可以根据实际需求进行设置。详细的内容可以查看 SQLAlchemy 的官方文档。在使用 SQLAlchemy 操作数据库时，需要了解常用的增删改查操作。下面是一些常用的操作示例：查询数据查询数据通常使用 query 方法，例如从 User 表中查询所有数据可以这样写：users = User.query.all()也可以根据条件过滤数据，例如查询名字为 Alice 的用户：user = User.query.filter_by(name='Alice').first()还可以使用 filter 方法组合多个条件，例如查询名字为 Alice 并且邮箱以 example.com 结尾的用户：users = User.query.filter(User.name == 'Alice', User.email.endswith('example.com')).all()插入数据插入数据可通过创建一个新的数据模型对象并将其添加到会话中来实现：user = User(name='Bob', email='bob@example.com') db.session.add(user) db.session.commit()更新数据更新数据可以先查询要更新的记录，然后对其属性进行修改，并将其提交到数据库中：user = User.query.filter_by(name='Alice').first() user.email = 'alice.new@example.com' db.session.commit()删除数据删除数据通常先查询要删除的记录，然后调用 delete 方法将其删除：user = User.query.filter_by(name='Bob').first() db.session.delete(user) db.session.commit()除了上述基本操作之外，SQLAlchemy 还提供了很多其他的高级操作，例如聚合函数、联结查询、事务处理等功能。具体使用方法可以参考官方文档。