首页 > 解决方案 > pymysql 的问题。尝试在 SELECT 子句中使用字符串

问题描述

我正在使用 python 3.6.9 和 pymysql 库进行项目。基本上我试图在 SELECT 子句中使用字符串:

import pymysql;

def wypisywanie_z_bazy():
    connection = pymysql.connect(host='localhost',
                                        user='root',
                                        password='',
                                        db='dbprojekt',
                                        charset='utf8mb4',
                                        cursorclass=pymysql.cursors.SSDictCursor);#kursor bez bufora, wykorzystywany ze wzgledu na slabe dzialanie serwera (sugestia z dokumentacji technicznej)
    try:
        with connection.cursor() as cursor:
            sql = "SELECT * FROM `%s`";
            cursor.execute(sql,('Czlonek'));
            result=cursor.fetchall();
            print(result);
    finally:
        connection.close();

但是它不起作用。我也尝试过几种不同的方法,不幸的是它们都没有奏效。我怎样才能使这个条款起作用?我尝试查看 pymysql 文档,但失败了。

标签: pythonmysqlpymysql

解决方案


您可以尝试在 select 子句中使用 f 字符串或格式字符串:

table = 'Czlonek'
try:
    with connection.cursor as cursor:
        sql = f"SELECT * FROM {table}"
        cursor.execute(sql)
        result = cursor.fetchall()
except Exception:
    pass
finally:

你可能会接触到sql注入!


推荐阅读