我一直在尝试创建一个函数,该函数需要输入列名,表名,起始ID和结束ID,然后从与python连接的MYSQL Server中重新创建所需的表。我主要遇到两个问题,
第一行mycursor.execute("SELECT colNames FROM tablename")
不能理解colNames和tablename之类的变量,它只能获取列和表名的确切名称。我希望能够通过手动输入变量来调用表。我的第二个问题是该函数仅显示从StartId
开始并以EndId
结尾的行,为此,在这种情况下,我不知道如何修改for循环来为我执行此操作。
这是针对python中的mysql软件包的,我需要提取指定的列才能在其上启动机器学习过程(周期性检测,特征提取,特征选择等)
import mysql.connector
from mysql.connector import Error
mydb = mysql.connector.connect(
host='localhost',
database='feldbuslogging',
user='root',
password='xxx'
)
def readFromTable(connection, tablename, colNames, startId, endId):
tablename = input("Input Tablename: ")
colNames = input("Input Column Name: ")
startId = input("Input Start ID: ")
endId = input("Input End ID: ")
startId = int(startId)
endId = int(endId)
mycursor = mydb.cursor()
mycursor.execute("SELECT colNames FROM tablename")
myresult = mycursor.fetchall()
for x in myresult(startId: endId):
print(x)
我希望输出是一个新表,该表具有所需的变量和从StartId
开始并以EndId
结尾的行。
for x in myresult(startId:endId)
获得invalid Syntax
mycursor.execute("SELECT colNames FROM tablename")
获取feldbuslogging.tablename
不存在。答案 0 :(得分:0)
只为您提问。如果您的开始ID和结束ID是主键ID。
您可以进行以下简单修改(不安全):
mycursor = mydb.cursor()
mycursor.execute(
"SELECT {col} FROM {tbl} WHERE id>=%s AND id<%s".format(
col=colNames, tbl=tablename
),
(startId, endId)
)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
顺便说一句,您应该先阅读库文档。
您可以轻松找到它。
更新
正如@约翰·戈登所说。上面的代码对于用户输入col名称和表名称并不安全。
如果在生产时执行此操作。需要做更多检查。