Python程序员除了Python编程做到烂熟于心之外,也要会一些日常的SQL操作。通常在数据库创建成功之后,就需要创建数据表。
1、Python MySQL创建表
import mysql.connector
mydb = 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 datetime
app = 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)
# 如果折扣价不存在,设置为None
if not row_values[9]:
row_values[9] = None
# 如果折扣率不存在,设置为None
if 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介绍和使用 表操作增删查改