Python写入当地数据库与excel表参考模板(根据环境举行调解)

[复制链接]
发表于 2026-1-25 04:45:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
利用Python代码写入当地excel与sql数据库

1.天生数据&建表

先创建一张orders表,用于存放数据。
  1. # 创建一个名为 orders 的表
  2. # 如果这个表已经存在,那么就什么都不做
  3. # 否则,创建一个名为 orders 的表
  4. # 这个表有9个字段
  5. # id 字段是表的主键
  6. # orderid 字段存储订单的id
  7. # price 字段存储订单的价格
  8. # amount 字段存储订单的金额
  9. # create_time 字段存储订单的创建时间
  10. # payment_time 字段存储订单的支付时间
  11. # delivery_time 字段存储订单的发货时间
  12. # name 字段存储订单的收货人
  13. # address 字段存储订单的收货地址
  14. # phone 字段存储订单的收货人电话
  15. create table if not exists test.orders
  16. (
  17.     id            int auto_increment primary key,
  18.     orderid       double   null,
  19.     price         double   null,
  20.     amount        double   null,
  21.     create_time   datetime null,
  22.     payment_time  datetime null,
  23.     delivery_time datetime null,
  24.     name          text     null,
  25.     address       text     null,
  26.     phone         double   null
  27. );
复制代码
2.写入数据库大概excel表

  1. import pandas as pd
  2. import numpy as np
  3. import datetime
  4. import random
  5. from sqlalchemy import create_engine
  6. # 创建一个到mysql的连接引擎
  7. # mysql+pymysql是指使用pymysql模块来连接mysql
  8. # root是数据库的用户名
  9. # xxxxxx是数据库的密码
  10. # localhost是数据库的主机
  11. # 3306是数据库的端口
  12. # xxx是数据库的名称
  13. # charset=utf8是指以utf8的编码来连接数据库
  14. sql_conn=create_engine('mysql+pymysql://root:xxxxxx@localhost:3306/xxxx?charset=utf8')
  15. def get_data(row):
  16.     """
  17.     生成row行订单数据
  18.     每行数据包括
  19.         orderid: 11位随机数
  20.         price: 10-1000之间的随机浮点数
  21.         amount: 1-price之间的随机浮点数
  22.         create_time:现在的日期减去1-30天
  23.         payment_time: create_time加上1-3天
  24.         deliverty_time: payment_time加上1-7天
  25.         name:随机的中国人姓名
  26.         address:随机的中国省份和城市
  27.         phone: 139开头的随机8位数
  28.     """
  29.     data_list=[]
  30.     for i in range(1,row+1):
  31.         order_id=str(random.randint(1,9))+"".join(str(random.randint(0,9)) for i in range(10))
  32.         price=round(random.uniform(10,1000),2)
  33.         amount=round(random.uniform(1,price),2)
  34.         create_time=datetime.datetime.now()-datetime.timedelta(days=np.random.randint(1,30))
  35.         payment_time=create_time+datetime.timedelta(days=np.random.randint(1,3))
  36.         deliverty_time=payment_time+datetime.timedelta(days=np.random.randint(1,7))
  37.         First_name=np.random.choice(['',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '])
  38.         lastname=np.random.choice([' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '])
  39.         First_name=np.random.choice(['王', '李', '张', '刘', '陈', '杨', '黄', '吴', '赵', '周', '徐', '孙', '马', '朱', '胡', '林', '郭', '何', '高', '罗'])
  40.         lastname=np.random.choice(['伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', '洋', '勇', '峰', '宇', '超', '秀兰', '霞', '平', '刚', '桂英'])
  41.         name=First_name+lastname
  42.         province=np.random.choice([' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '])
  43.         city = np.random.choice([' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '])
  44.         address=province+city+np.random.choice([' ',' ',' ',' '])+str(np.random.randint(1,100))+' '
  45.         province=np.random.choice(['北京市', '上海市', '广东省', '浙江省', '江苏省', '湖南省', '湖北省', '河南省', '山东省', '辽宁省', '吉林省', '黑龙江省'])
  46.         city = np.random.choice(['北京市', '上海市', '广州市', '深圳市', '杭州市', '南京市', '武汉市', '长沙市', '郑州市', '济南市', '沈阳市', '哈尔滨市'])
  47.         address=province+city+np.random.choice(['东区','西区','北区','南区'])+str(np.random.randint(1,100))+'号'
  48.         phone='139'+''.join(str(np.random.randint(0,10)) for i in range(8))
  49.         data_list.append([order_id,price,amount,create_time,payment_time,deliverty_time,name,address,phone])
  50.         print(f"第{i}条数据已生成")
  51.     return data_list
  52.    
  53. # 1. 调用get_data()函数,生成1000行订单数据,并将其存在data_list中
  54. # 2. 将data_list转换为pandas DataFrame对象
  55. # 3. 将DataFrame的列名设置为['orderid', 'price', 'amount', 'create_time', 'payment_time', 'delivery_time', 'name', 'address', 'phone']
  56. # 4. 将数据写入到mysql数据库的orders表中
  57. # 5. 如果orders表已经存在,则将其删除后重新创建
  58. # 6. 将数据写入到excel文件中
  59. # 7. 打印"数据生成完毕"
  60. data_list=get_data(1000)
  61. df=pd.DataFrame(data=data_list)
  62. df.columns=['orderid', 'price', 'amount', 'create_time', 'payment_time', 'delivery_time', 'name', 'address', 'phone']
  63. #生成到Mysql
  64. df.to_sql('orders', con=sql_conn, if_exists='replace', index=False)
  65. #生成到excela
  66. # df.to_excel("orders.xlsx",index=False)
  67. print("数据生成完毕")
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表