python代码创建Mysql数据表和导入Excel表格数据
创始人
2024-06-03 10:53:34
0

Python程序员除了Python编程做到烂熟于心之外,也要会一些日常的SQL操作。通常在数据库创建成功之后,就需要创建数据表。

1、Python MySQL创建表

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

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

检查是否存在,并打印出数据库的表

mycursor.execute("SHOW TABLES")for x in mycursor:print(x)

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

这可以通过定义PRIMARY KEY来完成。

我们使用语句“INT AUTO_INCREMENT PRIMARY
KEY”,它将为每条记录插入一个唯一的编号。从1开始每新增一个记录增加1。

mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))")

如果表已存在,请使用ALTER TABLE关键字:

mycursor.execute("ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")

2、使用使用flask_sqlalchemy连接MySQL数据库并在数据库中创建数据表

SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。flask-sqlalchemy 是一个简化了 SQLAlchemy 操作的 flask 扩展。

数据库的其他配置

在这里插入图片描述

常用的SQLAlchemy字段类型

在这里插入图片描述

常用的SQLAlchemy列选项

在这里插入图片描述

示例代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
import datetimeapp = Flask(__name__)
# 设置连接数据库的URL
# 'mysql://MySQL用户名:MySQL密码@127.0.0.1:3306/数据库名称'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False	# # 设置是否跟踪数据库的修改情况,一般不跟踪
app.config['SQLALCHEMY_DATABASE_URI'] = ('mysql+pymysql://root:root@localhost/flask')
# 数据库操作时是否显示原始SQL语句,一般都是打开的,因为我们后台要日志
app.config['SQLALCHEMY_ECHO'] = True# 实例化orm框架的操作对象,后续数据库操作,都要基于操作对象来完成
db = SQLAlchemy(app) # 实例化SQLAlchemy类# 创建数据表类
# 定义表字段  primary_key:是否为主键  nullable:是否为空值
class Course(db.Model):course_id = db.Column(db.BigInteger,nullable=False,primary_key=True)product_id = db.Column(db.BigInteger,nullable=False)product_type = db.Column(db.Integer, nullable=False)product_name = db.Column(db.String(125), nullable=False)provider = db.Column(db.String(125), nullable=False)score = db.Column(db.Float(2))score_level = db.Column(db.Integer)learner_count = db.Column(db.Integer)lesson_count = db.Column(db.Integer)lector_name = db.Column(db.String(125))original_price = db.Column(db.Float(2))discount_price = db.Column(db.Float(2))discount_rate = db.Column(db.Float(2))img_url = db.Column(db.String(125))big_img_url = db.Column(db.String(125))description = db.Column(db.Text)@app.route('/')
def index():return "逃逸的卡路里"if __name__ == "__main__":app.run(debug=True)

读取Excel表格数据导入到数据库表

import pymysql
import xlrd# 连接数据库
conn = pymysql.connect(host='localhost', user='root', passwd='root', db='flask', charset='utf8')
cursor = conn.cursor() # 创建游标# 读取excel中内容到数据库
workbook = xlrd.open_workbook('./明日学院Python课程数据2019-09-25.xlsx')
sheet = workbook.sheet_by_index(0) # 根据索引获取sheet
data_list = []
nrows = sheet.nrows  # 获取行数
ncols = sheet.ncols  # 获取列数# 遍历每一行数据
for i in range(1, nrows):# 在列表中第一个元素为0,方便后面使用insert插入数据row_values = [0]+ sheet.row_values(i)# 如果折扣价不存在,设置为Noneif not row_values[9]:row_values[9] = None# 如果折扣率不存在,设置为Noneif not row_values[10]:row_values[10] = None# 追加到列表中data_list.append(row_values)# 拼接'%s'
val = '%s,'*(ncols+1)
# 批量添加数据
cursor.executemany(f"insert into course values({val[:-1]});", data_list)
conn.commit()   # 提交数据
cursor.close()  # 关闭游标
conn.close()    # 关闭数据库连接

3、总结

以上就是今天分享的Python通过两种方式创建MySQL数据库表的经验分享,希望对看到的小伙伴有帮助。有问题可以留言讨论。
相关文章推荐:python学习之flask sqlalchemy介绍和使用 表操作增删查改

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...