python mysql中in引數化說明

2022-09-25 10:33:08 字數 1708 閱讀 1274

第一種:拼接字串,可以解決問題,但是為了避免sql注入,不建議這樣寫

還是看看第二種:使用.format()函式,很多時候我都是使用這個函式來對sql引數化的

舉個例子:

select * from xx where id in (1,2,3)

引數化in裡面的值:

select * from xx where id in ({}).format('1,2,3')

你可以列印下看看,和你原來的sql是一模一樣的

補充知識:python與mysql互動/讀取本地配置檔案/互動報錯

如果自己寫mysql連線要讀取本地配置檔案,需要注意:

在配置檔案config.ini中寫:

[sql]

ip = ***

port = ***

table = ***

uname = ***

passwd = ***

如:test.py檔案

# 首先匯入

import pymysql

# 這是獲取配置檔案的內容

host = conf.get('sql', 'ip')

port = conf.get('sql', 'port')

database = conf.get('sql', 'table'),

user = conf.get('sql', 'uname')

password = conf.get('sql', 'pas')

# 建立mysql資料庫連線

conn = pymysql.connect(host=host, port=port, db=database, us程式設計客棧er=user, password=password, charset='utf8') # 這裡注意有可能報錯,後面會說

sql = '***' # sql語句

cs1 = conn.cursor() # 建立執行物件

count = cs1.execute(sql) # 執行sql語程式設計客棧句,返回值是資料庫中影響的行數,並賦值給count

conn.commit() # 提交資料庫的變更

cs1.close() # 關閉執行物件

conn.close() # 關閉資料庫連線物件

報錯:can only concatenate tuple (not "bytes") to tuple

這是因為在配置檔案讀進來的某個結果是個陣列,列印看一下就知道了

但是在上篇python讀取配置檔案中,試過第乙個[global]中讀取的沒有出現陣列形式,這個是為什麼我也不知道了,歡迎大家留言共同交流

[errno 11004] getaddrinfo failed 和下面這程式設計客棧個

django操作mysql時django.db.utils.operationalerror: (2003, "can't connect to mysql server")錯誤:

如果是在引用本地配置檔案時報錯,這個報錯也很有可能是讀取配置檔案時的問題

可以嘗試這樣解決:

1.自己本地用工具也好,命令也好嘗試連線一下,如果不行,那就可能是網路或者許可權問題

2.如果上面可以,直接寫乙個獨立的python檔案,不去讀取本地檔案,將資訊直接寫在py檔案中,執行結果可以,就是配置檔案讀取的問題

3.然後嘗試程式設計客棧讀取,並列印讀取結果,就能發現問題了

本文標題: python mysql中in引數化說明

本文位址:

安裝python MySQL環境

在解壓資料夾下執行 python setup.py build 可能會提示缺少setuptools,首先安裝pypa setuptools 繼續安裝可能提示 environmenterror mysql config not found 解決辦法 1 ubuntu下 執行sudo apt get i...

python MySQL 批量插入

coding utf 8 import pymysql 開啟資料庫連線 db pymysql.connect host localhost port 3306 user username passwd password db database name charset utf8 使用cursor 方...

Python Mysql依賴初探

環境依賴 mysql 5.7.17 python 2.7 mysql python 1.2.5 mysqldb是基於mysql c api 原生mysql api 為核心的乙個面向python的介面,封裝了許多mysql c api的方法,簡化python使用mysql。在原生的mysql api中...