4Manuals

  • PDF Cloud HOME

Python MySql API Download

    如何将文本边界框与pyplot.Rectangle对齐? 导入类问题 在Python数据框中选择列时出错 使用Rabbit的pika确认消息 如何在按住键的同时暂停VideoStream? Python OpenCV TypeError:无法处理此数据类型 使用buildozer不会下载sdl2_image SMTPSenderRefused,421,超出超时 Tensorflow多线程推理比单线程推理慢 关于python中变量的困惑。 python如何使用变量?

我正在使用python创建mysql的API。我正在尝试获取多个列。在SQL查询中,通常会执行类似SELECT col1,col2 .... FROM tablename;的操作。 我的python API同样看起来像这样:

def get_multiple_columns(self, tablename, limit, *colname):
        sql = 'Select {} From {} limit {}'.format(*colname, tablename, limit)
        return self.query_exec_fetch_res(sql)

作为参考,我附上了其余代码:

class database(object):
    def __init__(self, host = MYSQL_DB_IP,
                       port = MYSQL_DB_PORT,
                       username = MYSQL_DB_USERNAME,
                       password = MYSQL_DB_PASSWORD,
                       dbname = MYSQL_DB_TRADING):
        self.dbname = dbname
        self.host = host
        self.port = port
        self.username = username
        self.password = password
        self.session = None
        self.cursor  = None
        self.connect_to_db()

    # Function to connect to database.     
    def connect_to_db(self):

        if not self.session:
            try:
                self.session = pymysql.connect(host=self.host,
                                               port=self.port,
                                               user=self.username,
                                               passwd=self.password,
                                               db=self.dbname)
                self.cursor = self.session.cursor()
            except Exception as e:
                print("database init failed \n{}".format(e))

    def get_db_client(self):
        return self.session

    def get_db_cursor(self):
        return self.cursor

    def disconnect_from_db(self):
        if self.session:
            self.session.close()
            self.session = None
            self.cursor  = None

    #function to execute query and fetch the result
    def query_exec_fetch_res(self,query):
        self.cursor.execute(query)
        return self.cursor.fetchall()

    def get_mysql_version(self):
        sql = "SELECT VERSION()"
        return self.query_exec_fetch_res(sql)

    def get_all_column_info(self, tablename):
        sql = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = \"{}\"".format(tablename)
        return self.query_exec_fetch_res(sql) 

    def get_all_column_names(self, tablename):
        result = self.get_all_column_info(tablename)
        return [row[3] for row in result]

    def get_info_where_clause(self,tablename,colname,fieldname, value):
        sql = "SELECT {} FROM {} WHERE {}=\"{}\"".format(colname, tablename, fieldname, value)
        result = self.query_exec_fetch_res(sql)
        info = [ row for row in result ]
        return info 

    def get_multiple_columns(self, tablename, limit, *colname):
        sql = 'Select {} From {} limit {}'.format(*colname, tablename, limit)
        return self.query_exec_fetch_res(sql)

除get_multiple_columns函数外,所有函数均起作用。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

在方法get_multiple_columns中,参数colname以tuple的形式出现,因此您需要:

sql = 'Select {} From {} limit {}'.format(', '.join(colname), tablename, limit)



Similar searches
    Istio添加和删除标题,但不会覆盖 使用window.onload之后,“功能未定义” 如何使用cuda推力库有效地进行特征分解或SVD分解? 从Node.js后端观察/订阅外部API 在React Native