python - 在 Python 中使用 mysql 游标方法进行替换
问题描述
我有多个以模式命名的数据库。数据库名称,
例如: house_1
, house_2
,house_2
在我的 Python(2.7) 脚本中,传递了一个变量 (house_id)。该变量包含 1、2 或 3 等。
我需要能够根据 house_id 建立与适当数据库的连接。
单独来看,这看起来像:
house1_db = mysql.connector.connect(user="root", password="mypassword!", host="127.0.0.1", database="house_1")
cursor = house1_db.cursor
这样做对我来说似乎很笨拙。我正在寻找一种等效于字符串替换的方法。
所以,脚本通过了house_id = 6
接着:
house%d_db = mysql.connector.connect(user="root", password="mypassword!", host="127.0.0.1", database="house_%d") % house_id
cursor = house%d_db.cursor % house_id
我知道上面的例子%d
是错误的。但我认为它说明了我正在努力实现的目标。也许不吧。
我主要是在玩字符串替换,但遇到如下错误:“
字符串对象没有属性光标”。
提前致谢。我知道这是一个模糊的问题。我对此感到非常沮丧!
解决方案
创建一个函数并传递db_name
给它。
使用会自动with
关闭你的connection
。cursor
(不需要像conn.close()
,那样明确地关闭它cursor.close()
)
尝试这个,
def create_conn(db_name):
return mysql.connector.connect(user="root", password="mypassword!", host="127.0.0.1", database=db_name)
with create_conn('house_1') as conn:
with conn.cursor() as cursor:
...
推荐阅读
- javascript - 如何在承诺中获取异步方法返回可用于同步函数的值?
- xml - Zabbix HTTP 代理修剪 xml
- javascript - Javascript:循环结构对象?什么情况下使用这个?
- gams-math - GAMS:更改文件名以包含在循环中
- javascript - 获取 tbody td 的值
- amazon-web-services - 无法从 AWS 控制台修改 S3 存储桶上的任何设置
- jquery - HTML 基于 td 标签内容使用 javascript 更改字体粗细
- c# - Exchange Webservices将邮件转发到C#中的错误邮件地址
- spring - Spring boot Data JPA 是否在内部使用休眠来实现它?
- sql-server - 在 SSMS 中使用存储过程时使用批量插入 Azure SQL DB 时出错