python之sqlalchemy创建表的实例详解

yizhihongxing

首先,需要明确的是SQLAlchemy是一个Python编写的关系型数据库框架,可以方便地对数据库进行操作。在这样一个框架中创建表格非常容易,下面我将详细介绍如何使用SQLAlchemy创建一个表格。

环境搭建

在开始创建表格之前,你需要先安装SQLAlchemy模块。可以在命令行中输入以下命令安装:

pip install sqlalchemy

依赖库安装后,你需要先连接到一个目标数据库。这里假设你正在使用的是MySQL数据库,并且在本地安装了XAMPP来提供MySQL服务。连接到MySQL数据库需要指定数据库类型、用户名、密码、地址、端口和数据库名称等参数。代码如下:

from sqlalchemy import create_engine

servertype = "mysql"
username = "root"
password = ""
host = "localhost"
port = 3306
dbname = "test"

# 拼装连接字符串
connstr = f"{servertype}://{username}:{password}@{host}:{port}/{dbname}"
engine = create_engine(connstr, echo=True)

创建表格

在连接到目标数据库后,你可以使用SQLAlchemy创建表格了。下面我们来看一下如何创建一个简单的表格。

from sqlalchemy import Table, Column, Integer, String, MetaData

metadata = MetaData()

# 定义表格
users = Table("users", metadata,
    Column("id", Integer, primary_key=True),
    Column("name", String),
    Column("age", Integer)
)

# 创建表格
metadata.create_all(engine)

上述代码定义了一张名为 users 的数据表,其包含三个字段:id、name、age。其中,id 字段作为主键,且为自增长的整数类型。我们调用了 metadata.create_all() 方法,它根据上面定义的表格信息自动创建了数据表。

如果你想要了解更多的关于SQLAlchemy创建表格的内容,可以从以下两个示例中获取帮助。

示例一:创建有默认值的字段

假设我们需要创建一张名为 user_info 的数据表,包含四个字段:

  • id:自动递增的主键ID
  • name:用户名,长度为200个字符
  • age:用户年龄,整数类型,有默认值 0
  • city:所在城市,长度为200个字符,如果未填写则默认值为'无'

创建表格的代码如下:

from sqlalchemy import Table, Column, Integer, String, MetaData
from sqlalchemy.sql.expression import text

metadata = MetaData()

# 定义表格
user_info = Table("user_info", metadata,
    Column("id", Integer, primary_key=True, autoincrement=True),
    Column("name", String(length=200)),
    Column("age", Integer, server_default=text('0')),
    Column("city", String(length=200), default='无')
)

# 创建表格
metadata.create_all(engine)

在上面的代码中,我们可以看到,我们通过 Column 类的参数 server_default 和 default 设置了字段 age 和 city 的默认值。

示例二:定义外键约束

再假设我们需要创建另一张名为 user_address 的数据表,这张表包含三个字段:

  • id:自动递增的主键 ID
  • user_id:用户 ID,外键约束为 user_info 表的 id 字段
  • address:家庭住址,字符串类型,长度为 500

创建 user_address 表格的代码如下:

from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey

metadata = MetaData()

# 定义表格
user_address = Table("user_address", metadata,
    Column("id", Integer, primary_key=True, autoincrement=True),
    Column("user_id", Integer, ForeignKey("user_info.id")),
    Column("address", String(length=500))
)

# 创建表格
metadata.create_all(engine)

在上面的代码中,我们使用 ForeignKey 类来定义 user_id 字段与 user_info 表的 id 字段之间的外键约束。特别地,考虑到表 user_info 尚未创建,它被放到了 ForeignKey 类的字符串参数中。

总结

如上所述,使用 SQLalchemy 可以非常方便地创建数据库表格,同时也能够更加灵活地定义表格的属性(包括默认值以及约束等),这样在进行数据库操作时也会变得更加方便。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python之sqlalchemy创建表的实例详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • js中值引用和地址引用实例分析

    JS中的值引用和地址引用指的是,在JS中,非基本类型数据(如对象、数组等)的赋值方式存在两种:值传递和引用传递。当使用值传递时,实际上是将变量的值(即数据内容)直接复制给接收变量;而当使用引用传递时,则是将变量的地址(指针)复制给接收变量,两者指向同一块内存空间,从而共享同一份数据。这里通过两个实例来详细讲解这两种传递方式的异同点。 实例1:值传递 假设有两…

    Flask 2023年5月16日
    00
  • Python编程flask使用页面模版的方法

    一、使用页面模板 Flask使用Jinja2作为默认的模板引擎。Jinja2是一个现代的模板引擎,可以方便地生成HTML、XML或其他格式的文档。使用Jinja2模板引擎可以快速生成静态页面,提高开发效率。 在项目根目录下新建一个templates文件夹,这个文件夹存放我们的模板文件。然后在模板文件夹下新建一个HTML文件作为模板文件。 示例一:一个简单的模…

    Flask 2023年5月15日
    00
  • Flask框架web开发之零基础入门

    下面我将详细讲解“Flask框架web开发之零基础入门”的完整攻略,并且提供两条示例说明。 标题一:Flask框架web开发之零基础入门 1. Flask框架简介 Flask是一款Python web框架,使用简单灵活,受到了广大开发者的喜爱。它以微框架的形式出现,核心只包含了路由、调试等核心组件,避免了臃肿的代码。另外,Flask有着强大的扩展支持,也非常…

    Flask 2023年5月15日
    00
  • Python Type Hints 学习之从入门到实践

    下面是详细讲解“Python Type Hints 学习之从入门到实践”的完整攻略: Python Type Hints 学习之从入门到实践 什么是 Python Type Hints Python 从 3.5 版本开始引入了 Type Hints 的概念,它是一种用于标注函数、变量、类等对象类型的注释。Python 并不会在运行时对其进行强制校验,但是可以…

    Flask 2023年5月16日
    00
  • flask实现python方法转换服务的方法

    实现python方法转换服务主要涉及以下几个步骤: 安装Flask Flask是一个轻量级的Python Web框架,可以用来搭建Web应用程序。安装Flask可以使用pip命令: pip install flask 创建Flask应用 首先,我们需要创建一个简单的Flask应用。通过以下代码,可以得到一个极简的Flask应用: from flask imp…

    Flask 2023年5月15日
    00
  • python jinja2模板的使用示例

    下面我将详细讲解“python jinja2模板的使用示例”的完整攻略,包含两个示例。 1. 安装Jinja2 首先,你需要安装Jinja2。如果你使用的是Python3,可以通过如下命令进行安装: pip3 install jinja2 2. 示例一 假如你有这样一个 hello.html 的模板文件: <html> <head> …

    Flask 2023年5月15日
    00
  • Flask深入了解Jinja2引擎的用法

    首先介绍一下Jinja2引擎,它是一个基于Python的模板引擎,常用于web开发中生成HTML页面。 一、Jinja2引擎的基本用法 在Flask中,可以通过实例化Jinja2对象,将其与app关联,来使用Jinja2引擎。示例代码如下: from flask import Flask, render_template from jinja2 import…

    Flask 2023年5月15日
    00
  • python自动化测试中APScheduler Flask的应用示例

    以下是关于“python自动化测试中APScheduler Flask的应用示例”的详细讲解: 简介 APScheduler 是一个轻量级的 Python 定时任务调度框架,可以添加多个任务,可以动态添加修改和删除任务,先来看一下简单示例: from apscheduler.schedulers.blocking import BlockingSchedul…

    Flask 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部