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...