Python插入mysql的变量问题
1|0问题
先上代码
import pymysql import time import random import uuid import threading # 连接mysql db = pymysql.connect(host='10.10.100.184', port=3308, user='root', passwd='3hyHd1MLARaMkUJsr3dp', db='iot') # 获取mysql操作光标 cursor = db.cursor() # 初始化变量 count = 0 # 设置sql语句循环次数 print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) while count < 5: count += 1 # 定义mysql字段的范围随机数变量 quyu = random.randint(440300, 440310) jingdu = random.uniform(99, 117) weidu = random.uniform(23, 41) city_list = [11, 12, 13, 14, 15, 25, 35, 37, 38] city_id = random.choice(city_list) # driver_name = f"'cs{count}'" driver_name = 'cs' print(driver_name) print(type(driver_name)) driver_type_list = [111,311,812,813,814,911,1111,1211,1311] driver_type = random.choice(driver_type_list) online = [0,1] line = random.choice(online) # 生成mysql语句插入语句 sql = "insert into assets (`user_id`, `company_id`, `province_id`, `city_id`, `district_id`, `assets_name`, `assets_code`, `device_num`, `zn_device_type_id`, `device_type_id`, `project_id`, `longtitude`, `latitude`, `create_time`, `assets_picture`, `address`, `order_num`, `description`, `description_two`, `is_online`, `assets_type_picture`, `product_material`, `online_time`, `offline_time`)\ values ('554','99','440000','440300',{},{},'ghhgfftyhddd',{},NULL,{},'1',{},{},'2020-12-15 17:09:04','[\"http://10.10.100.184:9997/images/1111608021229407238.jpg\"]','广东省深圳市龙岗区宝龙街道新能源一路科信科技大厦',NULL,NULL,NULL,{},NULL,NULL,NULL,NULL);".format(quyu,driver_name,driver_name,driver_type,jingdu,weidu,line) print(sql) # 执行sql语句 try: cursor.execute(sql) db.commit() # 错误回滚 except: db.rollback() # 关闭mysql print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) db.close()
可以看到'cs'在传递的过程中去掉了引号,导致数据操作不成功,于是我们在外面在嵌套一层引号,变成"'cs'"
# encoding:utf-8 import pymysql import time import random import uuid import threading # 连接mysql db = pymysql.connect(host='10.10.100.184', port=3308, user='root', passwd='3hyHd1MLARaMkUJsr3dp', db='iot') # 获取mysql操作光标 cursor = db.cursor() # 初始化变量 count = 0 # 设置sql语句循环次数 print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) while count < 5: count += 1 # 定义mysql字段的范围随机数变量 quyu = random.randint(440300, 440310) jingdu = random.uniform(99, 117) weidu = random.uniform(23, 41) city_list = [11, 12, 13, 14, 15, 25, 35, 37, 38] city_id = random.choice(city_list) # driver_name = f"'cs{count}'" driver_name = "'cs'" print(driver_name) print(type(driver_name)) driver_type_list = [111,311,812,813,814,911,1111,1211,1311] driver_type = random.choice(driver_type_list) online = [0,1] line = random.choice(online) # 生成mysql语句插入语句 sql = "insert into assets (`user_id`, `company_id`, `province_id`, `city_id`, `district_id`, `assets_name`, `assets_code`, `device_num`, `zn_device_type_id`, `device_type_id`, `project_id`, `longtitude`, `latitude`, `create_time`, `assets_picture`, `address`, `order_num`, `description`, `description_two`, `is_online`, `assets_type_picture`, `product_material`, `online_time`, `offline_time`)\ values ('554','99','440000','440300',{},{},'ghhgfftyhddd',{},NULL,{},'1',{},{},'2020-12-15 17:09:04','[\"http://10.10.100.184:9997/images/1111608021229407238.jpg\"]','广东省深圳市龙岗区宝龙街道新能源一路科信科技大厦',NULL,NULL,NULL,{},NULL,NULL,NULL,NULL);".format(quyu,driver_name,driver_name,driver_type,jingdu,weidu,line) print(sql) # 执行sql语句 try: cursor.execute(sql) db.commit() # 错误回滚 except: db.rollback() # 关闭mysql print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) db.close()
传递的参数有引号了,我们也检查了数据库,数据插入成功。
下面我来进行字符串和数字拼接,同时数字是一个变量,于是这么写:f"'cs{count}'"
# encoding:utf-8 import pymysql import time import random import uuid import threading # 连接mysql db = pymysql.connect(host='10.10.100.184', port=3308, user='root', passwd='3hyHd1MLARaMkUJsr3dp', db='iot') # 获取mysql操作光标 cursor = db.cursor() # 初始化变量 count = 0 # 设置sql语句循环次数 print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) while count < 5: count += 1 # 定义mysql字段的范围随机数变量 quyu = random.randint(440300, 440310) jingdu = random.uniform(99, 117) weidu = random.uniform(23, 41) city_list = [11, 12, 13, 14, 15, 25, 35, 37, 38] city_id = random.choice(city_list) driver_name = f"'cs{count}'" print(driver_name) print(type(driver_name)) driver_type_list = [111,311,812,813,814,911,1111,1211,1311] driver_type = random.choice(driver_type_list) online = [0,1] line = random.choice(online) # 生成mysql语句插入语句 sql = "insert into assets (`user_id`, `company_id`, `province_id`, `city_id`, `district_id`, `assets_name`, `assets_code`, `device_num`, `zn_device_type_id`, `device_type_id`, `project_id`, `longtitude`, `latitude`, `create_time`, `assets_picture`, `address`, `order_num`, `description`, `description_two`, `is_online`, `assets_type_picture`, `product_material`, `online_time`, `offline_time`)\ values ('554','99','440000','440300',{},{},'ghhgfftyhddd',{},NULL,{},'1',{},{},'2020-12-15 17:09:04','[\"http://10.10.100.184:9997/images/1111608021229407238.jpg\"]','广东省深圳市龙岗区宝龙街道新能源一路科信科技大厦',NULL,NULL,NULL,{},NULL,NULL,NULL,NULL);".format(quyu,driver_name,driver_name,driver_type,jingdu,weidu,line) print(sql) # 执行sql语句 try: cursor.execute(sql) db.commit() # 错误回滚 except: db.rollback() # 关闭mysql print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) db.close()
__EOF__

本文作者:Harry
本文链接:https://www.cnblogs.com/harry66/p/14151062.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/harry66/p/14151062.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:Harry_666,转载请注明原文链接:https://www.cnblogs.com/harry66/p/14151062.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?