原因
最近写了一个python脚本,由于使用了分库分表,所以需要根据分表字段动态计算数据库以及表名,一开始直接在SQL中使用了%s
占位符,后来发现报错,提示SQL语句语法错误,仔细一看才发现原来是直接把库名和表名外都加了单引号,导致语法错误,但是又不想直接去拼接SQL,毕竟有些费劲儿,所以就网上寻觅着换了种方法。
解决办法
解决办法还是比较简单的,直接上代码了:
db_name = sharding('db', 'database', store_id, 10, 4, -1)
store_detail = sharding('table', 'table', store_id, 10, 128, -1)
query_sql = f'SELECT * FROM {db_name}.{store_detail} where store_id = %s '
cur = conn_test.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(query_sql, store_id)
result_list = cur.fetchall()
简单来说就是使用f
来格式化字符串常量,这样就避免了SQL传参带来的问题了,还是比较简单的,就是一开始走进了误区,哎~~
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接