Python生成sql語句

2021-10-23 08:12:26 字數 2195 閱讀 2410

def

generate_sql

(table_name, ignore_col_set)

:"""

根據資料庫中的列名生成字典格式的sql語句

:param table_name 待生成sql的表名

:param ignore_col_set 要忽略的列名集合

:return: 生成的sql語句

"""sql =

"show columns from %s"

% table_name

# 我寫的get_conn是獲取乙個全域性的資料庫連線物件,各位可以隨意改改

rs = get_result(get_conn(

), sql)

col_list =

list()

for row in rs:

if row[0]

in ignore_col_set:

continue

else:0

])sql =

"insert into %s (%s) \nvalues ("

%(table_name,

", "

.join(

map(

str, col_list)))

sql =

"%s%s )"

%(sql,

", "

.join(

map(

lambda item:

"%("

+ item +

")s"

, col_list)))

get_conn(

).close(

)return sql

舉個例子:

先說好,這個表不是我設計的qaq.

生成sql語句如下:

insert

into notice_library (ggcxmc, pcdm, ggxhn, pp, lx, edzl, zzl, zbzl, rlzl, pfbzyj, pfbz, zs, zj, zh, thps, lts, ltgg, jjl**, qhx, qlj, hlj, sbm, zcc, zck, zcg, hxc, hxk, hxg, zgcs, edzk, jsszcrs, zxxs, ztgczzl, zzllyxs, bgcazzdcszl, qymc, pl, gl)

values(%

(ggcxmc)s,

%(pcdm)s,

%(ggxhn)s,

%(pp)s,

%(lx)s,

%(edzl)s,

%(zzl)s,

%(zbzl)s,

%(rlzl)s,

%(pfbzyj)s,

%(pfbz)s,

%(zs)s,

%(zj)s,

%(zh)s,

%(thps)s,

%(lts)s,

%(ltgg)s,

%(jjl**)s,

%(qhx)s,

%(qlj)s,

%(hlj)s,

%(sbm)s,

%(zcc)s,

%(zck)s,

%(zcg)s,

%(hxc)s,

%(hxk)s,

%(hxg)s,

%(zgcs)s,

%(edzk)s,

%(jsszcrs)s,

%(zxxs)s,

%(ztgczzl)s,

%(zzllyxs)s,

%(bgcazzdcszl)s,

%(qymc)s,

%(pl)s,

%(gl)s )

然後呢,為了避免重複生成sql語句,全域性定義乙個變數,一開始設定為none,然後:

global global_sql

if global_sql is

none

:# 不忽略任何一列

global_sql = generate_sql(table_name,

set())

# 用該sql語句做一些不可描述的事情...

大功告

python 生成sql語句

coding utf8 import re import sys defflushoutput fh,msg print fh,msg fh.flush a 0 phoneprefixs 這次是運營商手機號碼的前三位 try with open sys.argv 1 rb as f1 with op...

Python指令碼批量生成SQL語句

通過python指令碼批量生成插入資料的sql語句 原始sql語句 insert into system user id,login name,name,password,salt,code,createtime,email,main org,positions,status,used,url,in...

sql語句生成sql指令碼

sql語句有一種特別的用法,相信很多人還不知道,我也是後來學到的,因此拿來跟大家分享下 生成sql指令碼 舉個例子 select 1 from student 如果表中有資料的話,你就會發現查詢的結果會是 根據這個原理,我們可以用來生成sql指令碼,以下就是例項 例項1 乙個簡單的例子 select...