我有以下格式的查询,
DROP TABLE X;
CREATE TEMPORARY TABLE IF NOT EXISTS X (SELECT * FROM TABLE);
SELECT A,B,C FROM X;
但是,如果我使用 mysql 连接器在 Python 中运行它。我收到以下消息,'No result set to fetch from'。我的理解是它只执行第一个DROP TABLE X;并返回。还有其他方法可以实现这一目标吗?我也尝试过使用multi=True,但也没有用。提前致谢
python mysql-connect mysql-connector mysql-python mysql-connector-python
我正在使用以下查询从 mysql 数据库读取数据:
设置:
conn = MySQLdb.connect(host='127.0.0.1', port=3306, user='**', passwd='**', db='***')
engine = create_engine('mysql+mysqldb://***')
sql = 'show tables like "{}"'.format('aTable_' + '%')
Run Code Online (Sandbox Code Playgroud)
选项-1:这样就可以了
a1 = pd.read_sql_query(sql, conn)
Run Code Online (Sandbox Code Playgroud)
选项2:这将抛出错误:
ProgrammingError:(MySQLdb.exceptions.ProgrammingError )格式字符串的参数不足[SQL:显示类似“aTable %”的表](此错误的背景位于:http://sqlalche.me/ e/f405 )
a1 = pd.read_sql_query(sql, engine)
Run Code Online (Sandbox Code Playgroud)
如果我想使用第二种风格(引擎作为参数)我该怎么办?
我有超过10GB的.csv文件.我试图使用python将这些文件中的数据导入MySQL.由于csv文件是逗号分隔文件,并且我有数据本身包含逗号,因此我不能在这里使用','进行拆分.请建议分割csv文件的其他选项.我想将数据从csv文件(数据本身包含逗号)导入MySQL(我使用Wamp服务器).我有"伦敦,英国","2010","信用,储蓄"等数据
我有一个奇怪的问题.有两个数据库.其中一个产品包含在线商店.另一个上面有网上商店软件,只有活跃的产品.
我想从db1中获取值,在python中更改一些值并插入到db2中.
db1.execute("SELECT * FROM table1")
for product in db1.fetchall():
# ...
db2.execute("INSERT INTO table2 ...")
print "Check: " + str(db2.countrow)
Run Code Online (Sandbox Code Playgroud)
所以我可以通过select获取值,即使从db2中选择也没问题.我的检查总是给我1但是table2中没有新的行.自动增量值增加但没有数据.我甚至没有得到像"无法插入"这样的错误所以有人知道可能出现什么问题吗?(如果我通过phpmyadmin手动插入它可以工作......如果我只是从我的脚本中取sql并手动执行sql-statements工作以及)
编辑:在这里找到答案如何在Python中检查插入是否成功使用MySQLdb?
有没有办法让这些执行没有每次提交?我有一个围绕mysqldb的包装器,它对我来说非常有效,通过提交改变行为我需要进行一些重大更改.
编辑2:好吧我发现db1是MyISAM(没有提交就可以工作)而db2是InnoDB(实际上似乎只能用于提交)我想我必须将db2更改为MyISAM.
conn = MySQLdb.connect (host = "localhost", user="root", passwd="xxxx", db="xxxxx")
cursor = conn.cursor()
cursor.execute ("SELECT * FROM pin WHERE active=1")
while (1):
row = cursor.fetchone()
st = str(row[2])
pin = str(row[1])
order = str(st)+str(pin)
if row == None:
break
sendSerial(order)
conn.close()
Run Code Online (Sandbox Code Playgroud)
为什么st = str(row [2])变成错误?应该如何从数据库中将行检索到变量中?
谢谢您的回答。
我在python中有一个多线程应用程序,其中我创建了多个生产者线程,并从数据库中提取数据.数据以块的形式提取.因此,线程创建带有限制值的sql语句的部分将保持在锁定状态.为了让线程同时执行查询,query()函数保持在锁外.然后,结果获取部分再次保持在锁定之下.以下是代码段:
with UserAgent.lock:
sqlGeoTarget = "call sp_ax_ari_select_user_agent_list('0'," + str(self.chunkStart) + "," + str(self.chunkSize) + ",1);"
self.chunkStart += self.chunkSize
self.dbObj.query(sqlGeoTarget)
print "query executed. Processing data now..."+sqlGeoTarget
with UserAgent.lock:
result = self.dbObj.fetchAll()
self.dbObj.dbCursor.close()
Run Code Online (Sandbox Code Playgroud)
但是这段代码会产生致命的错误segmentation fault (core dumped).因为如果我将所有代码置于锁定状态,它就可以正常执行.我在获取数据后显式关闭游标,当query()函数再次触发时重新打开它.
此代码位于名为的类中UserAgent,它是名为的类的共享资源Producer.因此,共享数据库对象.所以问题区域99%必须是因为db对象被共享同时命中查询并且关闭游标然后必须弄乱结果集.但那么如何解决这个问题并实现并发数据库查询执行?
我已经完成以下工作:
import MySQLdb as mdb
con = mdb.connect(hostname, username, password, dbname)
cur = con.cursor()
count = cur.execute(query)
cur.close()
con.close()
Run Code Online (Sandbox Code Playgroud)
我有两个查询,我在mysql控制台中执行它们,我可以查看结果。
但是当我通过python提供相同的查询时,一个查询有效,而另一个查询则无效。
我确定这不是mysql或查询或python代码的问题。我怀疑cur.execute(query)函数。
有人遇到过类似情况吗?有什么办法吗?
我有下表
db.queries
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(256) | NO | | | |
| sql | text | NO | | NULL | |
| frequency | int(10) unsigned | NO | | 86400 | |
Run Code Online (Sandbox Code Playgroud)
我正在使用MySQLdb python工具插入标记的名称,名称和SQL查询.
cur.execute("insert into db.queries (name, sql, frequency) values ('{0}', '{1}', {2})".format('some query', 'Select a query', 86400)
Run Code Online (Sandbox Code Playgroud)
我以前曾经多次使用MySQL和MySQLdb,从来没有遇到过这些问题.
我经常遇到的错误如下:
_mysql_exceptions.ProgrammingError:(1064,"您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以便在'sql,frequency'附近使用正确的语法)值('MY NAME','选择计数(*)如'第1行')
我感谢任何帮助.
嗨,我正在寻找类似的主题,但找不到任何决定发布的主题。任何提示或链接将不胜感激。
我正在使用python 2.7 + MySQLdb,我做了一条sql语句,但是有一个奇怪的问题。
?作品?
Val3 = 1
sql = """SELECT ValA FROM %s WHERE Val2 = %s AND Val3 = %s""" % (Val1, Val2, Val3)
Run Code Online (Sandbox Code Playgroud)
不行吗?
Val3 = "variable"
sql = """SELECT ValA FROM %s WHERE Val2 = %s AND Val3 = %s""" % (Val1, Val2, Val3)
Run Code Online (Sandbox Code Playgroud)
当我将文本用作变量时,不会执行sql语句。
(注意:没有错误消息会像没有出现一样被对待)
有人知道问题出在哪里吗?
from flask import Flask
from flask_restful import Resource, Api
from flask_restful import reqparse
from flask_mysqldb import MySQL
mysql = MySQL()
app = Flask(__name__)
# MySQL configurations
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = ''
app.config['MYSQL_DB'] = 'itemlistdb'
app.config['MYSQL_HOST'] = 'localhost'
mysql.init_app(app)
api = Api(app)
class AuthenticateUser(Resource):
def post(self):
try:
# Parse the arguments
parser = reqparse.RequestParser()
parser.add_argument('email', type=str, help='Email address for Authentication')
parser.add_argument('password', type=str, help='Password for Authentication')
args = parser.parse_args()
_userEmail = args['email']
_userPassword = args['password']
conn = mysql.connection
cursor = conn.cursor() …Run Code Online (Sandbox Code Playgroud) mysql-python ×10
python ×10
mysql ×4
database ×1
insert ×1
pandas ×1
select ×1
sqlalchemy ×1
wamp ×1
wampserver ×1
where ×1