Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:有没有一种通用的方法来简化sql中使用的代码_Python - Fatal编程技术网

Python:有没有一种通用的方法来简化sql中使用的代码

Python:有没有一种通用的方法来简化sql中使用的代码,python,Python,这是我的密码 a1 = "a1" a2 = "a2" a3 = "a3" bb1 = [a1,a2] bb2 = [a1,a2,a3] db = BasicMysql(host="*",port=,user="*",password="*") db_values = "INSERT INTO db.bb1 values" + "('%s','%s') " %(bb1[0],bb1[1]) db.exec_insert(db_val

这是我的密码

    a1 = "a1"
    a2 = "a2"
    a3 = "a3"
    bb1 = [a1,a2]
    bb2 = [a1,a2,a3]

    db = BasicMysql(host="*",port=,user="*",password="*")
    db_values = "INSERT INTO db.bb1 values" + "('%s','%s') " %(bb1[0],bb1[1])
    db.exec_insert(db_values)  //db.exec_insert is packaged which is same as "cursor.execute(query)"

    db_values = "INSERT INTO db.bb2 values" + "('%s','%s') " %(bb2[0],bb2[1],bb2[2])
    db.exec_insert(db_values)
这可能是一种表达db_值的好方法。有什么想法吗

可能是这样的伪代码:

all_sql = [bb1,bb2]
for one in all_sql:
     db_values = "????"
     db.exec_insert(db_values)
下面是我的API,它打包了MySQLdb API

导入MySQLdb class BasicMysql://定义一个类

def __init__(self,**kw):
        self.host = kw['host']
        self.port = kw['port']
        self.user = kw['user']
        self.password = kw['password']

            try:
                database_conn = MySQLdb.connect(host=self.host,port=self.port,user=self.user,passwd=self.password,local_infile
= 1,charset="utf8")
            except MySQLdb.Error, e:
                sys.exit(e)
            self.conn = database_conn

        def exec_insert(self,query):
            conn = self.conn
            cursor = conn.cursor()

            try:
                cursor.execute(query)
            except Exception,e:
                print Exception,":",e

            conn.commit()
            cursor.close()

        def __exit__(self):
            try:
                self.conn.close
            except Exception,e:
                 print Exception,":",e

我找到了能满足我需求的当地人:

getVar = locals()
a1 = "a1"
a2 = "a2"
a3 = "a3"
bb1 = [a1,a2]
bb2 = [a1,a2,a3]
all_sql = [bb1,bb2]
for one in all_sql:
     db_values = ",".join([str([getVar[i]) for i in all_sql])
     db.exec_insert(db_values)

我不清楚的表达方式和糟糕的英语可能会困扰其他人:

为什么你做所有这些作业只是为了打印值?是的,这个特定的代码可以归结为一个硬编码的打印语句。您可能从实际场景中提取了太多实际问题,因此没有什么用处。或者您需要进一步澄清这方面的哪些方面需要简化。谢谢,我添加了一些评论。您应该使用DB驱动程序提供的现成语句API,而不是将值插入字符串中@对不起,我不清楚你的意思。db.exec_insert是我定义的API,它使用MySQLdb API。那么预语句API呢?无论如何,我添加了我的代码如何定义db.exec\u insert?