我做了一些测试并证明使用checkout事件处理程序检查断开连接是否与Elixir一起使用.开始认为我的问题与更新:我只是通过调用session.commit()从子进程调用有关?session.commit()下面的子进程,更新示例来反驳自己.我正在使用多处理模块来创建子流程.
这是代码,显示它应该如何工作(甚至没有使用pool_recycle!):
from sqlalchemy import exc
from sqlalchemy import event
from sqlalchemy.pool import Pool
from elixir import *
import multiprocessing as mp
class SubProcess(mp.Process):
def run(self):
a3 = TestModel(name="monkey")
session.commit()
class TestModel(Entity):
name = Field(String(255))
@event.listens_for(Pool, "checkout")
def ping_connection(dbapi_connection, connection_record, connection_proxy):
cursor = dbapi_connection.cursor()
try:
cursor.execute("SELECT 1")
except:
# optional - dispose the whole pool
# instead of invalidating one at a time
# connection_proxy._pool.dispose()
# raise DisconnectionError - pool will …Run Code Online (Sandbox Code Playgroud) python sqlalchemy multiprocessing mysql-python python-elixir
我是MySQLdb的新手.我需要从存储在MySQL中的预定义数据库中读取值.我的问题是当收集值时,它们是元组格式,而不是字符串格式.所以我的问题是:有没有办法将元组转换为字符串?
以下是我的代码的详细信息
import MySQLdb
#get value from database
conn = MySQLdb.connect("localhost", "root", "123", "book")
cursor = conn.cursor()
cursor.execute("SELECT koc FROM entries")
Koc_pre = str(cursor.fetchone())
#create a input form by Django and assign pre-defined value
class Inp(forms.Form):
Koc = forms.FloatField(required=True,label=mark_safe('K<sub>OC</sub> (mL/g OC)'),initial=Koc_pre)
#write out this input form
class InputPage(webapp.RequestHandler):
def get(self):
html = str(Inp())
self.response.out.write(html)
Run Code Online (Sandbox Code Playgroud)
输出采用元组格式"Koc =('5',)",但我希望"koc = 5".那么有人可以给我一些我应该检查的建议或参考书吗?
提前致谢!
我正在用 python 编写一个与 MySQL 数据库交互的程序。对于 sql 查询,我使用 MySQLdb。问题是fetchone()返回 None 但使用数据库浏览器我可以看到该行存在。这段代码:
query = "SELECT * FROM revision WHERE rev_id=%s;"
cursor.execute(query % revision_id)
row = cursor.fetchone()
if row == None:
raise Exception("there isn't revision with id %s" % revision_id)
Run Code Online (Sandbox Code Playgroud)
我不知道这里发生了什么。有任何想法吗?
编辑:好的,在某些情况下,它在某些情况下有效,但无论如何,当它不起作用时,表中存在该行。我将一个游标对象传递给一个函数,上面的代码在函数中。问题与这个游标对象有关。问题可能是我将游标作为参数传递给函数吗?我该如何测试?
EDIT2:是的,问题是光标在我多次使用后不起作用。是因为其他程序连接到数据库还是我做错了什么。我有一个while循环,我在其中调用一个函数来从数据库中获取信息。经过一些迭代后,它不再起作用。还有另一个程序在while循环工作时写入数据库。
我在Django中与MySQL数据库的连接有以下设置.
'default': {
'NAME' : MYSQL_DB_NAME,
#'ENGINE' : 'mysql',
'ENGINE' : 'django.db.backends.mysql',
'USER' : 'ccurvey',
'PASSWORD' : MYSQL_PASSWORD,
'HOST' : MYSQL_HOST,
'PORT' : '',
'OPTIONS' : {
'init_command' : 'set storage_engine=INNODB',
},
},
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
如果我想在"init_command"中添加另一个"set"命令,那该咒语是什么?
'init_command' : ('set storage_engine=INNODB',
'set transaction isolation level read committed'),
Run Code Online (Sandbox Code Playgroud)
给我"connect()参数必须是字符串,而不是元组"
'init_command' : ('set storage_engine=INNODB; set transaction isolation level read committed;'),
Run Code Online (Sandbox Code Playgroud)
给我
_mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now")
Run Code Online (Sandbox Code Playgroud) 我正在使用从MySQL站点下载的mysql connector.Python 1.0.9.
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT UNIQUE,
Shot VARCHAR(4),
sec varchar(5),
lay VARCHAR(15) NOT NULL,
lay_status VARCHAR(15) NOT NULL,
blk VARCHAR(10) NOT NULL,
blk_status VARCHAR(15) NOT NULL,
pri VARCHAR(10) NOT NULL,
pri_status VARCHAR(15) NOT NULL,
ani VARCHAR(10) NOT NULL,
ani_status VARCHAR(15) NOT NULL,
status VARCHAR(5)
);
INSERT INTO my_table VALUES
(1,'SH01','3','1863','yes','1863','yes','P4645','yes','P4557','yes','Over'),
(2,'SH02','2.5','1863','yes','P4645','no','P4557','yes','1863','no','Over'),
(3,'SH03','0.5','P4645','yes','P4557','yes','1863','yes','1863','yes','WIP'),
(4,'SH04','1.25','1863','no','P4645','no','P4557','yes','1863','yes','RTK'),
(5,'SH05','1','1863','yes','1863','yes','P4645','yes','P4557','yes','WIP'),
(6,'SH06','6','P4557','yes','P4645','yes','P4645','yes','P4557','yes','WIP');
Run Code Online (Sandbox Code Playgroud)
我能够执行如下的单个SQL语句.
import mysql.connector
cnx = mysql.connector.connect(user='scott', database='test')
cursor = cnx.cursor() …Run Code Online (Sandbox Code Playgroud) 我使用mysqldb连接到mysql数据库,我获取变量中的元数据/列和另一个中的数据/行.现在我必须将列表和元组合并为一个字典并保留顺序.我知道dicts是无序的,但除此之外还有其他选择吗?
cursor.description = ['userid', 'cid', 'mid', 'did', 'msid']
data = (29L, 35L, None, '', None)
result = {}
for i in data:
result.update = dict(zip(cols, i))
Run Code Online (Sandbox Code Playgroud)
预期结果
result = {'userid': 29L, 'cid': 35L, 'mid': None, 'did': '', 'msid': None}
Run Code Online (Sandbox Code Playgroud) 我有一个类似的python代码
import MySQLdb
import sys
try:
con = MySQLdb.connect(host = 'localhost',user = 'crawler',passwd = 'crawler', db = 'real_estate_analytics')
#... rest of code ...
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0],e.args[1])
sys.exit(1)
Run Code Online (Sandbox Code Playgroud)
问题是我收到以下错误:
Error 1045: Access denied for user 'crawler'@'localhost' (using password: YES)
如果我在终端上的mysql mysql -u crawler -pcrawler我可以访问数据库没有问题.
mysql> show databases;
+-----------------------+
| Database |
+-----------------------+
| information_schema |
| AL |
| cloversoup |
| codebar |
| mysql |
| performance_schema |
| real_estate_analytics |
| …Run Code Online (Sandbox Code Playgroud) 我希望能够共享一个自包含的virtualenv,即确保安装的所有脚本都能够直接运行而无需设置任何内容.例如,我在使用MySQL-python的virtualenv中安装了一个脚本.不幸的是,导入MySQLdb会查找一个共享库(libmysqlclient.so),该库被移动到我系统上的标准目录以外的地方.有没有办法保证我的virtualenv每次有人使用它时都会找到它?
不确定我是否应该使用Server Overflow ...在Azure上使用Django网站,通过GitHub进行部署...我在requirements.txt中有mysql-python甚至可以将site-packages添加到我的应用程序根目录...出现以下错误.
错误:需要Microsoft Visual C++ 9.0(无法找到vcvarsall.bat).从http://aka.ms/vcpython27获取它
我正在尝试以下一段代码,这是我在 2016 年的一本书中找到的:
import MySQLdb
import pandas as pd
# database setup omitted for the sake of brevity
nr_customers = 100
colnames = ["movie%i" %i for i in range(1, 33)]
pd.np.random.seed(2015)
generated_customers = pd.np.random.randint(0,2,32 * nr_customers).reshape(nr_customers,32)
data = pd.DataFrame(generated_customers, columns = list(colnames))
data.to_sql('cust',mc,index=True,if_exists='replace',index_label='cust_id')
Run Code Online (Sandbox Code Playgroud)
它只是给了我以下错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~/anaconda3/envs/TestEnv/lib/python3.7/site-packages/MySQLdb/cursors.py in execute(self, query, args)
242 try:
--> 243 query = query % args
244 except TypeError as m:
TypeError: not all arguments converted during string formatting
During handling …Run Code Online (Sandbox Code Playgroud) mysql-python ×10
python ×8
mysql ×4
django ×3
azure ×1
dictionary ×1
list ×1
pandas ×1
sqlalchemy ×1
tuples ×1
virtualenv ×1