当前位置: 首页 > news >正文

MySQL 数据库表格创建、数据插入及获取插入的 ID:Python 教程

创建表格

要在MySQL中创建表格,请使用"CREATE TABLE"语句。

确保在创建连接时定义了数据库的名称。

示例创建一个名为 “customers” 的表格:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")

如果上述代码没有出现错误,那么您已成功创建了一个表格。

检查表格是否存在

您可以通过使用"SHOW TABLES"语句列出数据库中的所有表格来检查表格是否存在:

示例返回系统中的表格列表:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()mycursor.execute("SHOW TABLES")for x in mycursor:print(x)

主键

在创建表格时,您还应该为每个记录创建一个具有唯一键的列。

这可以通过定义主键来完成。

我们使用语句"INT AUTO_INCREMENT PRIMARY KEY",它将为每个记录插入一个唯一的数字。从1开始,每个记录递增一次。

示例在创建表格时创建主键:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))")

如果表格已经存在,可以使用ALTER TABLE关键字:

示例在现有表格上创建主键:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()mycursor.execute("ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")

插入数据到表格

要在MySQL中填充表格,请使用"INSERT INTO"语句。

示例在 “customers” 表格中插入一条记录:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")
mycursor.execute(sql, val)mydb.commit()print(mycursor.rowcount, "record inserted.")

重要提示:请注意语句 mydb.commit()。这是必需的,以使更改生效,否则不会对表格进行更改。

插入多行

要将多行插入到表格中,使用 executemany() 方法。

executemany() 方法的第二个参数是包含要插入数据的元组列表:

示例填充 “customers” 表格的数据:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [('Peter', 'Lowstreet 4'),('Amy', 'Apple st 652'),('Hannah', 'Mountain 21'),('Michael', 'Valley 345'),('Sandy', 'Ocean blvd 2'),('Betty', 'Green Grass 1'),('Richard', 'Sky st 331'),('Susan', 'One way 98'),('Vicky', 'Yellow Garden 2'),('Ben', 'Park Lane 38'),('William', 'Central st 954'),('Chuck', 'Main Road 989'),('Viola', 'Sideway 1633')
]mycursor.executemany(sql, val)mydb.commit()print(mycursor.rowcount, "were inserted.")

获取插入的ID

您可以通过询问游标对象来获取刚刚插入的行的ID。

注意:如果插入多行,将返回最后插入行的ID。

示例插入一行,并返回ID:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase"
)mycursor = mydb.cursor()sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("Michelle", "Blue Village")
mycursor.execute(sql, val)mydb.commit()print("1 record inserted, ID:", mycursor.lastrowid)

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关文章:

  • 分享springboot框架的一个开源的本地开发部署教程(若依开源项目开发部署过程分享持续更新二开宝藏项目MySQL数据库版)
  • 树莓派智能自行车灯:亲,小心后方大卡车~
  • 假期2.6
  • Android11+ 如何获得外部存储权限
  • 亚信安慧AntDB领航分布式数据库的突破之路
  • 【doghead】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行2
  • 计算已知经纬度的两点距离(两种方法GeoTools和Haversine公式)
  • 《低功耗方法学》翻译——第八章:低功耗IP设计
  • Python进阶--爬取下载人生格言(基于格言网的Python3爬虫)
  • MySQL原理(五)事务
  • 【Linux】基于管道进行进程间通信
  • api接口是什么意思,api接口该如何防护呢?
  • DNS服务器异常有什么影响,怎么处理
  • gtkmm4文件浏览对话框
  • 【目录】CSAPP的实验简介与解法总结(已包含Attack/Link/Architecture/Cache)
  • CentOS 7 防火墙操作
  • classpath对获取配置文件的影响
  • ES6系统学习----从Apollo Client看解构赋值
  • If…else
  • isset在php5.6-和php7.0+的一些差异
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • java中的hashCode
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Redis在Web项目中的应用与实践
  • springMvc学习笔记(2)
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 回顾2016
  • 力扣(LeetCode)965
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 手机端车牌号码键盘的vue组件
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 我看到的前端
  • linux 淘宝开源监控工具tsar
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • !!Dom4j 学习笔记
  • # C++之functional库用法整理
  • # 达梦数据库知识点
  • #{}和${}的区别是什么 -- java面试
  • (k8s中)docker netty OOM问题记录
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (算法)前K大的和
  • (一)80c52学习之旅-起始篇
  • (转)C#调用WebService 基础
  • (转)Scala的“=”符号简介
  • **CI中自动类加载的用法总结
  • **PHP二维数组遍历时同时赋值
  • .NET MVC 验证码
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET4.0并行计算技术基础(1)