- 修改了 DBService 类,增加了 MySQL 数据库连接配置 - 重新定义了表结构,适应 MySQL 数据库- 更新了相关的 SQL 查询语句 - 增加了创建数据库的逻辑 - 优化了表创建语句,使用 InnoDB 引擎和 UTF-8 字符集
165 lines
7.4 KiB
Python
165 lines
7.4 KiB
Python
import mysql.connector
|
||
from mysql.connector import Error
|
||
|
||
|
||
class DBService:
|
||
# MySQL数据库连接配置
|
||
db_config = {
|
||
'host': '101.200.148.149',
|
||
'port': 4406,
|
||
'user': 'root',
|
||
'password': 'Jian(1@3)',
|
||
'database': 'verify_db'
|
||
}
|
||
conn = None
|
||
|
||
def __init__(self):
|
||
"""
|
||
初始化函数
|
||
"""
|
||
self.conn = self.get_conn()
|
||
print("DBService init")
|
||
self.create_database()
|
||
self.create_file_data_table()
|
||
self.create_invoice_table()
|
||
self.create_verify_log_table()
|
||
pass
|
||
|
||
def get_conn(self):
|
||
"""
|
||
创建数据库连接
|
||
该函数用于创建数据库连接,并返回连接对象
|
||
返回值:
|
||
连接对象
|
||
"""
|
||
if self.conn is not None and self.conn.is_connected():
|
||
return self.conn
|
||
try:
|
||
self.conn = mysql.connector.connect(**self.db_config)
|
||
except Error as e:
|
||
print(e)
|
||
return self.conn
|
||
|
||
def create_database(self):
|
||
"""
|
||
创建数据库
|
||
"""
|
||
try:
|
||
# 连接 MySQL 服务器(不指定数据库)
|
||
server_config = self.db_config.copy()
|
||
server_config.pop('database', None)
|
||
server_conn = mysql.connector.connect(**server_config)
|
||
cursor = server_conn.cursor()
|
||
|
||
# 创建数据库
|
||
cursor.execute(f"CREATE DATABASE IF NOT EXISTS {self.db_config['database']} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")
|
||
cursor.close()
|
||
server_conn.close()
|
||
|
||
# 重新连接到指定数据库
|
||
self.conn = self.get_conn()
|
||
except Error as e:
|
||
print(e)
|
||
|
||
def create_verify_log_table(self):
|
||
"""
|
||
创建验证记录表
|
||
该函数用于创建表,并返回创建结果
|
||
"""
|
||
try:
|
||
# delete_table_sql = """DROP TABLE IF EXISTS verify_log;"""
|
||
# c = self.get_conn().cursor()
|
||
# c.execute(delete_table_sql)
|
||
create_table_sql = """CREATE TABLE IF NOT EXISTS verify_log (
|
||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
cyjgxx TEXT NOT NULL,
|
||
inspectionAmount VARCHAR(255) NOT NULL,
|
||
verify_time VARCHAR(255) NOT NULL,
|
||
file_path TEXT NOT NULL,
|
||
`desc` TEXT
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;"""
|
||
c = self.get_conn().cursor()
|
||
c.execute(create_table_sql)
|
||
self.get_conn().commit()
|
||
except Error as e:
|
||
print(e)
|
||
|
||
# 文件数据表
|
||
def create_file_data_table(self):
|
||
"""
|
||
创建文件数据表
|
||
该函数用于创建表,并返回创建结果
|
||
"""
|
||
try:
|
||
# delete_table_sql = """DROP TABLE IF EXISTS file_data;"""
|
||
# c = self.get_conn().cursor()
|
||
# c.execute(delete_table_sql)
|
||
create_table_sql = """CREATE TABLE IF NOT EXISTS file_data (
|
||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
file_name TEXT NOT NULL,
|
||
file_path TEXT NOT NULL,
|
||
file_size INT NOT NULL,
|
||
file_type VARCHAR(50) NOT NULL,
|
||
file_time VARCHAR(50) NOT NULL,
|
||
file_hash VARCHAR(255) NOT NULL,
|
||
UNIQUE KEY unique_file_hash (file_hash)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;"""
|
||
c = self.get_conn().cursor()
|
||
c.execute(create_table_sql)
|
||
self.get_conn().commit()
|
||
except Error as e:
|
||
print(e)
|
||
|
||
# 发票数据表
|
||
def create_invoice_table(self):
|
||
# delete_table_sql = """DROP TABLE IF EXISTS invoice;"""
|
||
# c = self.get_conn().cursor()
|
||
# c.execute(delete_table_sql)
|
||
create_table_sql = """
|
||
-- 主表存储发票基本信息
|
||
CREATE TABLE IF NOT EXISTS invoice (
|
||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
checkCode VARCHAR(255), -- 校验码(唯一)
|
||
drawer VARCHAR(100), -- 开票人
|
||
formType VARCHAR(100), -- 表单类型
|
||
invoiceAmountPreTax DECIMAL(15,2), -- 税前金额
|
||
invoiceCode VARCHAR(50) NOT NULL, -- 发票代码
|
||
invoiceDate VARCHAR(50), -- 开票日期
|
||
invoiceNumber VARCHAR(50) NOT NULL, -- 发票号码
|
||
invoiceTax DECIMAL(15,2), -- 发票税额
|
||
invoiceType VARCHAR(100), -- 发票类型
|
||
machineCode VARCHAR(50), -- 机器编号
|
||
passwordArea TEXT, -- 密码区
|
||
printedInvoiceCode VARCHAR(50), -- 打印发票代码
|
||
printedInvoiceNumber VARCHAR(50), -- 打印发票号码
|
||
purchaserBankAccountInfo TEXT, -- 购买方银行信息
|
||
purchaserContactInfo TEXT, -- 购买方联系信息
|
||
purchaserName VARCHAR(255), -- 购买方名称
|
||
purchaserTaxNumber VARCHAR(100), -- 购买方税号
|
||
recipient VARCHAR(100), -- 收款人
|
||
remarks TEXT, -- 备注
|
||
reviewer VARCHAR(100), -- 复核人
|
||
sellerBankAccountInfo TEXT, -- 销售方银行信息
|
||
sellerContactInfo TEXT, -- 销售方联系信息
|
||
sellerName VARCHAR(255), -- 销售方名称
|
||
sellerTaxNumber VARCHAR(100), -- 销售方税号
|
||
specialTag VARCHAR(50), -- 特殊标记
|
||
title VARCHAR(255), -- 发票标题
|
||
totalAmount DECIMAL(15,2), -- 合计金额
|
||
totalAmountInWords VARCHAR(255), -- 大写金额
|
||
file_path TEXT, -- 文件哈希
|
||
verify_time VARCHAR(50), -- 验证时间
|
||
verify_status VARCHAR(50), -- 验证结果
|
||
inspectionAmount VARCHAR(50), -- 验证次数
|
||
`desc` TEXT, -- 备注
|
||
desc_files TEXT, -- 备注附件
|
||
status VARCHAR(20), -- 是否报销(yes,no)
|
||
UNIQUE KEY unique_invoice (invoiceCode, invoiceNumber)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||
"""
|
||
try:
|
||
c = self.get_conn().cursor()
|
||
c.execute(create_table_sql)
|
||
self.get_conn().commit()
|
||
except Error as e:
|
||
print(e) |