Python插入mysql的變量問題


問題

先上代碼

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()


成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM