我想修改sqlalchemy设置以引发警告异常.
例如,当我在字段中插入的数据量大于定义的列长度时,mysql将截断数据,将截断的数据插入字段并发出警告.
而不是警告,我希望sqlalchemy代表mysql引发适当的错误.
我是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".那么有人可以给我一些我应该检查的建议或参考书吗?
提前致谢!
我创建了一个用于处理的类SQLAlchemy:
class DbAbsLayer(object):
def __init__(self):
self.setConnectionURI();
def setConnectionURI(self):
self.dbDriver = "mysql";
self.dbHostname = "localhost";
self.dbUsername = "root";
self.dbPassword = "123";
self.dbName = "mydbname";
def createSession(self):
Session = sessionmaker();
self.session = Session.configure();
self.session = Session();
def createEngine(self):
self.setConnectionURI();
self.engine = create_engine(self.dbDriver + "://" + self.dbUsername + ":" + self.dbPassword + "@" + self.dbHostname + "/" + self.dbName);
Run Code Online (Sandbox Code Playgroud)
然后我创建了我的表类:
class SellsTable(declarative_base()):
__tablename__ = 'sellers'; #
id = Column(Integer,primary_key = True)
name = Column(String)
name_type = Column(Integer)
address = Column(String)
telephones …Run Code Online (Sandbox Code Playgroud) 关闭连接时遇到问题如下:
database = 'sed_database'
conn = MySQLdb.Connect(host='remote_host', user='default',
passwd='pass', db=database)
try:
try:
cursor = conn.cursor()
cursor.execute(sql_str)
results = cursor.fetchall()
except MySQLdb.Error, e:
print "MySQL/Server Error using query: %s" % sql_str
print "Using database: %s" % database
raise e
finally:
if cursor:
cursor.close()
if conn:
conn.close()
Run Code Online (Sandbox Code Playgroud)
这给出了:
Traceback (most recent call last):
File "trass.py", line 579, in ?
main(sys.argv)
File "trass.py", line 555, in main
old_rows, changes_list = auto_analyse_test(f, args.build, args.quiet, args.debug)
File "trass.py", line 352, in auto_analyse_test
last_analysed_build = get_sed_baseline_ref(test_file_name, …Run Code Online (Sandbox Code Playgroud) 我在Windows 7机器上使用python的MySQLdb模块,并尝试连接到Amazon RDS(SQL Server Express)上的远程数据库.这是我用来建立连接的简单连接方案,但它永远不会起作用:
import MySQLdb
cnx= {'host': 'dbname.xxxxxxxxxxxx.us-west-1.rds.amazonaws.com',
'username': 'username',
'password': 'password',
'db': 'dbname'}
db = MySQLdb.connect(cnx['host'],cnx['username'],cnx['password'], cnx['db'])
Run Code Online (Sandbox Code Playgroud)
当我执行此连接脚本时,它会等待几秒钟(主要是10到15秒),然后发出以下错误:
OperationalError: (2003, "Can't connect to MySQL server on 'dbname.xxxx.us-west-1.rds.amazonaws.com' (10060)")
Run Code Online (Sandbox Code Playgroud)
我之前在localhost上使用过sql server,并且习惯使用相同的方案连接它,它始终有效.现在,这是我第一次在亚马逊rds上处理数据库,并且不知道为什么会出现这个错误.请帮忙.谢谢.
我已经尝试了无数的解决方案,似乎没有任何工作.我正在尝试安装mysql-python,但这种情况发生在numpy和其他需要gcc的包中:
building '_mysql' extension
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -g -O2 -DNDEBUG -g -O3 -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/local/mysql/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mysql.c -o build/temp.macosx-10.6-intel-2.7/_mysql.o -Os -g -fno-strict-aliasing -arch x86_64
In file included from _mysql.c:29:
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/Python.h:33:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^
1 error generated.
error: command 'gcc-4.2' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
指出:
我已经安装了命令行工具
从/ usr/bin/gcc添加符号链接到/usr/bin/gcc-4.2
gcc-4.2 --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)
创建了一个虚拟的c文件,成功编译并运行它,所以gcc本身就没问题
$ …Run Code Online (Sandbox Code Playgroud) 我在我的django应用程序中使用mySQLdb模块,该应用程序通过WSGI链接到Apache.但是我得到了许可问题(如下所示).这取决于SElinux,如果我把它设置为被动,一切都还可以.
ImproperlyConfigured:加载MySQLdb模块时出错:/opt/django/virtenv/django15/lib/python2.7/site-packages/_mysql.so:无法从共享对象映射段:权限被拒绝
什么是更新SELinux的最佳方式,包括这个,而不必关闭整个事情.错误如下所示:
ImproperlyConfigured:加载MySQLdb模块时出错:/opt/django/virtenv/django1/lib/python2.7/site-packages/_mysql.so:从共享对象映射段的结果:权限被拒绝
#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb as mdb
con = mdb.connect('localhost', 'root', 'root', 'kuis')
with con:
cur = con.cursor()
cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s ",
("new_value" , "3"))
print "Number of rows updated:", cur.rowcount
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,数据库kuis中表Writer的第三行值用new_value更新,输出将是Number od行更新:1
我应该如何同时更新多行?
我已经阅读了几个关于如何安装MySQLdb的不同解释,但我不确定哪种情况适用于我,因为我的错误信息不同.我的系统似乎无法找到MySQLdb.我安装了pymysql,但是我需要导入MySQLdb来使用该库中的程序.
谢谢你的帮助.
$ conda install MySQLdb
Run Code Online (Sandbox Code Playgroud)
获取包元数据:....错误:当前osx-64通道中找不到匹配的包:mysqldb
你的意思是其中之一吗?
pymysql
Run Code Online (Sandbox Code Playgroud)
您可以在anaconda.org上搜索此软件包
anaconda search -t conda mysqldb
$ anaconda search -t conda mysqldb
Run Code Online (Sandbox Code Playgroud)
使用anaconda-server api站点https://api.anaconda.org
运行'anaconda show'以获取更多详细信息:未找到包名称 版本| 包装类型| 平台
------------------------- | ------ | --------------- | ---------------找到0个包裹
我正在运行MySQLdb v1.2.3并收到以下错误:
LookupError: unknown encoding: utf8mb4
Run Code Online (Sandbox Code Playgroud)
这个答案建议将MySQLdb更新为1.2.5版.我更新了,现在收到此错误:
ImportError: this is MySQLdb version (1, 2, 5, 'final', 1), but _mysql is version (1, 2, 3, 'final', 0)
Run Code Online (Sandbox Code Playgroud)
我不确定如何更新_mysql或如何更改我的设置.这只是一个python模块还是以某种方式连接到我的MySQL服务器?
编辑:我已经尝试运行以下三种方法:
sudo pip uninstall mysql-python
sudo pip install mysql-python
sudo pip uninstall mysql-python
sudo pip install mysql-python==1.2.5
sudo pip install mysql-python --upgrade
Run Code Online (Sandbox Code Playgroud)
卸载时我得到了
/usr/local/lib/python2.7/dist-packages/_mysql.so
/usr/local/lib/python2.7/dist-packages/_mysql_exceptions.py
/usr/local/lib/python2.7/dist-packages/_mysql_exceptions.pyc
Proceed (y/n)? y
Successfully uninstalled MySQL-python-1.2.3
Run Code Online (Sandbox Code Playgroud)
之后,我无法导入MySQLdb或_mysql重新安装总是给我_mysql1.2.3版本.
第二个编辑/解决方案:结果_mysql安装在服务器上的两个不同位置.如上所述,卸载/安装升级_mysql到v1.2.5,但每当我导入MySQLdb优先级时,其他版本的_mysqlpip都没有被触及.
mysql-python ×10
python ×9
mysql ×6
django ×2
sqlalchemy ×2
amazon-rds ×1
database ×1
gcc ×1
macos ×1
numpy ×1
python-2.4 ×1
selinux ×1
warnings ×1